Как создать пакетный файл для проверки версии Windows
При разработке сценариев и утилит для автоматизации задач в Windows важно уметь определять версию операционной системы. В этой статье мы рассмотрим, как создать простой пакетный файл (checkver.bat
), который поможет вам определить, работает ли ваша система на Windows 10 или Windows 11.
Создание пакетного файла
Первым шагом будет создание пакетного файла, который использует команду ver
для определения версии Windows. Вот пример базового кода:
@echo off
for /f "tokens=4-5 delims=[.] " %%i in ('ver') do set version=%%i.%%j
if "%version%" == "10.0" (
echo Detected Windows 10
REM Place Windows 10-specific commands here
) else if "%version%" == "11.0" (
echo Detected Windows 11
REM Place Windows 11-specific commands here
) else (
echo Operating system not recognized as Windows 10 or 11
REM Default commands here
)
В этом коде мы используем цикл для извлечения версии операционной системы и определения, является ли она 10-й или 11-й версией.
Почему команда ver
может быть недостаточной?
Стоит отметить, что команда ver
в Windows 11 возвращает следующее значение:
Microsoft Windows [Version 10.0.22000.2538]
Это может сбивать с толку при оценке, так как вывод по-прежнему указывает на 10.0. Поэтому для точного определения версии лучше использовать сборочный номер (build number).
Альтернативный способ проверки версии
Чтобы избежать путаницы с командой ver
, вы можете использовать следующий подход, который проверяет только сборочный номер:
for /f "tokens=3 delims=." %%i in ('ver') do set build=%%i
if %build% lss 22000 (
echo Detected Windows 10
) else (
echo Detected Windows 11
)
Этот код напрямую проверяет, меньше ли сборочный номер 22000, что позволяет различать Windows 10 и 11 более надежным способом.
Использование PowerShell для проверки версии
Как альтернатива пакетному файлу, вы также можете использовать PowerShell для проверки версии Windows, что более эффективно и интуитивно. Вот пример команды:
[System.Environment]::OSVersion.Version.Build -lt "22000" ? "Windows 10" : "Windows 11"
Этот однострочный код позволит вам моментально получить информацию о версии операционной системы без сложных манипуляций со строками.
Дополнительные возможности с PowerShell
Также стоит упомянуть команду:
(Get-ComputerInfo).OsBuildNumber
Эта команда собирает информацию о сборочном номере из реестра, предоставляя более детализированные данные о системе, но требует немного больше времени для выполнения.
Заключение
Определение версии Windows – важный компонент разработки скриптов и утилит для администраторов систем. Независимо от того, используете ли вы пакетные файлы или PowerShell, важно выбирать наиболее эффективные и надежные методы для выполнения этой задачи. Надеемся, что представленные здесь примеры помогут вам в вашей работе!