我正在开发一个脚本,目标是只在WindowsVersion10.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你能帮我实现版本控制然后正确的操作吗?
发布于 2019-06-13 09:26:03
您应该在:AddWinDefenderExclusion和:NoWinDefenderExclusion标签的末尾添加一个goto :eof ([SS64]:后藤)。从技术上讲,您不必在最后一次这样做(因为它无论如何都会到达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发布于 2019-06-13 11:09:19
您可能可以使用威麦克最简单地完成这一任务。
@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之前的任何版本,那么这可能会更好:
@Echo Off
WMIC OS Where "Version Like '__.%%'" Get Status 2> NUL | Find "Status" > NUL || Exit /B
Echo Windows Defender Exclusion will be added & Pause最后一行显然是您自己提供代码的地方。
发布于 2019-06-13 11:45:26
谢谢你的回答。
这是我的最后代码:
@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位)。
谢谢大家。
https://stackoverflow.com/questions/56577174
复制相似问题