如何在批处理脚本中比较Windows版本?

时间:2011-01-26 19:13:05

标签: windows command-line batch-file cmd

我习惯于在Linux中编写脚本编程,但现在我需要为Windows执行一个非常简单的脚本,根据操作系统的版本执行某些操作。

我已经看到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 个答案:

答案 0 :(得分:2)

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 (
  ...
)

答案 1 :(得分:0)

::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。我的基础是Wikipedia article