いくつかの実行可能ファイルを実行するバッチファイルがあり、成功すると終了したいのですが、終了コード<> 0の場合は停止します。これを行うにはどうすればよいですか?
3 に答える
「IfErrorlevel」コマンドが必要なようです。実行可能ファイルが失敗時に0以外の終了コードを返すと仮定すると、次のようになります。
myProgram.exe
if errorlevel 1 goto somethingbad
echo Success!
exit
:somethingbad
echo Something Bad Happened.
エラーレベルのチェックは、それ以上のチェックとして実行されるため、0以外の終了値があるとジャンプがトリガーされます。したがって、複数の特定の終了値をチェックする必要がある場合は、最初に最も高い値をチェックする必要があります。
条件付き処理シンボルを使用して、単純な成功/失敗チェックを実行することもできます。例えば:
myProgram.exe && echo Done!
エラーレベル0で返されたDone!
場合にのみ出力されます。myProgram.exe
myProgram.exe || PAUSE
myProgram.exeがゼロ以外のエラーレベルを返した場合、バッチファイルが一時停止します。
Hellionの答えよりも優れた解決策は、%ERRORLEVEL%
環境変数をチェックすることです。
IF %ERRORLEVEL% NEQ 0 (
REM do something here to address the error
)
IF
戻りコードがゼロより大きい値だけでなく、ゼロ以外の場合は、本体を実行します。
コマンドIF ERRORLEVEL 1 ...
は負の戻り値を見逃します。一部のプログラムでは、エラーを示すために負の値を使用する場合もあります。
ところで、私はチェランの答え(&&
および||
演算子を使用)が大好きで、すべての人にそれをお勧めします。
このトピックの詳細については、この記事をお読みください