我习惯于在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
我主要关心的是如何比较命令的输出。
答案 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。