2016-07-20 9 views
1

複数の値を持つ変数と "OR"条件を比較したいバッチスクリプトではなく、複数のifロジックを比較したい。変数を単一の複数の値と比較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 

答えて

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) 

自分の価値観は、あなたは可能性が連続していなかった場合if線をelseを除いて複製します(それほど良くはありませんが動作します)

もしあなたが知っていればあなただけ

goto branch%ERRORLEVEL% 

を行うというように

:branch0 
:branch1 
:branch2 

...とを定義することができ、すべての可能な値。

(これは多かれ少なかれ直接IFオンラインヘルプから持ち上げられ、私はそのようなコマンドの/スイッチを使用して多くのことを学んだ?)

+2

注: 'errorlevel' **は負になります。 (ほとんどのプログラムはそれを使用しませんが、いくつかありますが) – Stephan

関連する問題