2016-07-20 22 views
1

我想用「OR」條件I批處理腳本比較變量與多個值,而不是具有多個邏輯。在單個條件下比較變量與多個值如果條件

@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 

回答

1

如果你想比較某一列表中的錯誤級別:

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

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

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

...和安全,以防萬一:

if %errorlevel% LEQ -1 (GoTo Error) 

如果值不連續的你可以只是複製如果行沒有其他(不是很好,但會工作)

如果你知道所有可能的值,你可以做

goto branch%ERRORLEVEL% 

,並定義

:branch0 
:branch1 
:branch2 

...等等。

(這或多或少是直接從IF在線幫助解除,我學到了很多與像命令的/開關?)

+2

只是要注意:'errorlevel' **可以否定。 (雖然大多數程序不使用它,但也有一些,這樣做) – Stephan