如何批量创建条件windows?

How to create a Condition in batch windows?

我有一个脚本,我正在尝试创建一个函数来根据系统版本执行一些命令。

要知道我 Windows 的哪个版本:

systeminfo | Findstr / B / C: "OS Name" / C: "OS Version"> version.txt
set version = <version.txt
del version.txt
echo% version% #(variable test, ok)

我需要以下功能(或多或少像我在 Linux 批处理中那样):

if [echo% version% | Findstr / B / C: "Windows XP"> "0"] {
echo "Windows XP"
}
if [echo% version% | Findstr / B / C: "Windows 7"> "0"] {
echo "Windows 7"
}
if [echo% version% | Findstr / B / C: "Windows 8"> "0"] {
echo "Windows 8"
}
if [echo% version% | Findstr / B / C: "Windows 10"> "0"] {
echo "Windows 10"
}

我更喜欢 VER command 中的这种方法:

@Echo off
For /f "tokens=4,5,6 delims=[]. " %%G in ('ver') Do (set _major=%%G& set _minor=%%H& set _build=%%I) 

Echo Major version: [%_major%]
Echo Minor Version: [%_minor%]
Echo Build: [%_build%]

GOTO sub%_major%-%_minor%

:sub6-0
Echo Windows Vista or Windows 2008
goto next

:sub6-1
Echo Windows 7 or Windows 2008 R2
goto next

:sub6-2
Echo Windows 8 or Windows Server 2012
goto next

:sub6-3
Echo Windows 8.1 or Windows Server 2012
goto next

:sub10-0
:sub10-1
Echo Windows 10 or Windows 2016

:next
Echo Architecture: [%PROCESSOR_ARCHITECTURE%]
pause

或者用这批也可以达到目的:

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "5.1"     ( set "OS=Windows XP" )
if "%version%" == "5.2"     ( set "OS=Windows XP Professional x64 Edition" )
if "%version%" == "6.0"     ( set "OS=Windows Vista" )
if "%version%" == "6.1"     ( set "OS=Windows 7" )
if "%version%" == "6.2"     ( set "OS=Windows 8" )
if "%version%" == "6.3"     ( set "OS=Windows 8.1" )
if "%version%" == "10.0"    ( set "OS=Windows 10" )

echo OS is "%OS%"
echo The version is "%version%"
endlocal
pause

不能在 if 语句中执行命令,必须使用两行:

ver | find /I "10.0" > nul
if not errorlevel 1 (
  echo Win10
)
ver | find /I "5.1" > nul
if not errorlevel 1 (
  echo WinXP
)