在单个If条件下将Variable与多个值进行比较

时间:2016-07-20 12:41:34

标签: windows batch-file

我想将变量与多个值进行比较,使用" OR"条件我批处理脚本而不是多个if逻辑。

@echo off

robocopy D:\SourceData E:\DestinationData

If %ErrorLevel% Equ 0 OR 1 OR 2 ( GoTo Success) Else ( GoTo Error)

:Success

Echo Robocopy completed successfully.
Pause
GoTo End

:Error

Echo Robo completed with some error/s.
Paude

:End
Exit

2 个答案:

答案 0 :(得分:1)

ERRORLEVEL很少< 0,所以你可以使用:

if %errorlevel% LEQ 2 ( GoTo Success) Else ( GoTo Error)

......为了安全起见以防万一:

if %errorlevel% LEQ -1 ( GoTo Error)

如果您的值不是连续的,您可以只复制if行而不使用else(不是很好但会起作用)

如果您知道所有可能的值,那么

goto branch%ERRORLEVEL%

并定义

:branch0
:branch1
:branch2

......等等。

(这或多或少直接取自IF在线帮助,我通过/?切换这些命令学到了很多东西)

答案 1 :(得分:1)

如果要将错误级别与特定列表进行比较:

for %%a in (1 2 3 whatever) do (
  if %errorlevel% equ %%a (
     goto :Success
  )
)
goto :error