我正在开发一个脚本,目标是仅在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
你能帮我实现版本控制然后采取正确的行动吗?
您应该在 :AddWinDefenderExclusion 和 :NoWinDefenderExclusion 标签的末尾添加一个goto :eof
([SS64]:GOTO(。从技术上讲,您不必为最后一个执行此操作(因为它无论如何都会达到eof(,但是您应该这样做:
- 为了保持一致性
- 如果在它之后添加其他说明,您不会遇到麻烦
脚本.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
您可能可以使用 wmic 最容易地做到这一点:
@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
最后一行显然是您提供自己的代码的地方。
感谢您的回答。
这是我的最终代码:
@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 位数字(。
谢谢大家。