脚本检查Windows版本,然后仅对版本10.0(2016或更高版本)执行操作

时间:2019-06-13 09:14:02

标签: windows batch-file

我正在开发一个脚本,目标是仅在Windows 10.0或更高版本上执行操作。

我试图启动我的代码,但是这两个动作都已执行,在Win 2016上,批处理通常应仅在if / else中执行与goto相关的程序

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j

echo %version%
pause
if "%version%" geq "10.0" ( goto :AddWinDefenderExclusion )
else ( goto :NoWinDefenderExclusion )

:AddWinDefenderExclusion
echo Windows Defender Exclusion will be added


:NoWinDefenderExclusion
echo No Windows Defender Exclusion to add (Not a Windows 2016 or greater)

endlocal

您能帮我实现版本控制,然后采取适当的措施吗?

3 个答案:

答案 0 :(得分:0)

您应在:AddWinDefenderExclusion :NoWinDefenderExclusion 标签的末尾添加goto :eof[SS64]: GOTO)。从技术上讲,您不必在最后一个步骤中执行此操作(因为它将到达 eof ),但是您应该执行以下操作:

  • 为了保持一致
  • 如果在其后添加其他说明,不会遇到麻烦

script.bat

@echo off

setlocal

for /f "tokens=4-5 delims=. " %%i in ('ver') do (
    set VERSION_MAJ=%%i
    set VERSION_MIN=%%j
)

set MAJ_REQ=10
set MIN_REQ=0

echo %VERSION_MAJ%.%VERSION_MIN%

if %VERSION_MAJ% gtr %MAJ_REQ% (
        goto :AddWinDefenderExclusion
) else if %VERSION_MAJ% equ %MAJ_REQ% (
    if %VERSION_MIN% geq %MIN_REQ% (
        goto :AddWinDefenderExclusion
    )
)
goto :NoWinDefenderExclusion

goto :eof

:AddWinDefenderExclusion
    echo Windows Defender Exclusion will be added
    pause
    goto :eof

:NoWinDefenderExclusion
    echo No Windows Defender Exclusion to add (Not a Windows 2016 or greater)$
    pause
    goto :eof

答案 1 :(得分:0)

您可能可以使用最简单的方法:

@Echo Off
WMIC OS Where "Version Like '__.%%'" Get Status 2> NUL | Find "Status" > NUL && (
    Echo Windows Defender Exclusion will be added
) || Echo No Windows Defender Exclusion to add [Not Windows 2016 or greater]
Pause

如果您的脚本根本不适合Windows 10之前的任何版本的Windows,那么这可能会更好:

@Echo Off
WMIC OS Where "Version Like '__.%%'" Get Status 2> NUL | Find "Status" > NUL || Exit /B
Echo Windows Defender Exclusion will be added & Pause

最后一行显然是您提供自己的代码的地方。

答案 2 :(得分:0)

感谢您的回答。

这是我的最终代码:

@echo off
setlocal

for /f "tokens=4-5 delims=. " %%i in ('ver') do (
    set VERSION=%%i
)

if %version% GEQ 10 (
    goto :ADDEXCLUSION
) else (
    goto :NOEXCLUSION
)

:ADDEXCLUSION
echo ADDEXCLUSION
pause
goto :eof

:NOEXCLUSION
echo NOEXCLUSION
pause
goto :eof

我认为如果GEQ仅可与数字一起使用, 不带引号的它比较数字,并在变量%version%上加上引号,并对其值进行比较。就我而言,我的脚本检查版本号(前2位数字)

谢谢大家。