Как сравнить версии Windows в пакетном скрипте? - PullRequest
1 голос
/ 26 января 2011

Я привык к программированию сценариев в Linux, но теперь мне нужно сделать очень простой сценарий для окон, который делает что-то в зависимости от версии операционной системы.

Я видел, что ver команда возвращает версию, но я не знаю, как сравнить вывод этой команды со строкой.

В псевдокоде мне нужно только это:

version = system('ver')
if version > WINDOWS_XP_VERSION then
    do_something();
end if

или хорошок настоящему времени это также будет достаточно:

version = system('ver')
if version in [WINDOWS_VISTA_VERSION, WINDOWS_7_VERSION] then
    do_something();
end if

Моя главная задача - как сравнить вывод команды.

Ответы [ 2 ]

2 голосов
/ 27 января 2011
set Version=
for /f "skip=1" %%v in ('wmic os get version') do if not defined Version set Version=%%v
for /f "delims=. tokens=1-3" %%a in ("%Version%") do (
  set Version.Major=%%a
  set Version.Minor=%%b
  set Version.Build=%%c
)

set GTR_XP=
if %Version.Major%==5 if %Version.Minor% GTR 1 set GTR_XP=1
if %Version.Major% GTR 5 set GTR_XP=1

if defined GTR_XP (
  ...
)
0 голосов
/ 26 января 2011
::dirty
for /f "tokens=9 delims=Version " %v in ('ver') do set version=%v
for /f "tokens=1 delims=]" %v in ('echo %version%') do set version=%v
if %version% geq 5.1.2600 ( echo yes )

Если вы помещаете выше в пакетный файл, пожалуйста, добавьте дополнительные % перед %v.Я основал это на статье Википедии .

...