40

いくつかの実行可能ファイルを実行するバッチファイルがあり、成功すると終了したいのですが、終了コード<> 0の場合は停止します。これを行うにはどうすればよいですか?

4

3 に答える 3

46

「IfErrorlevel」コマンドが必要なようです。実行可能ファイルが失敗時に0以外の終了コードを返すと仮定すると、次のようになります。

myProgram.exe
if errorlevel 1 goto somethingbad
echo Success!
exit
:somethingbad
echo Something Bad Happened.

エラーレベルのチェックは、それ以上のチェックとして実行されるため、0以外の終了値があるとジャンプがトリガーされます。したがって、複数の特定の終了値をチェックする必要がある場合は、最初に最も高い値をチェックする必要があります。

于 2010-08-10T18:20:05.580 に答える
31

条件付き処理シンボルを使用して、単純な成功/失敗チェックを実行することもできます。例えば:

myProgram.exe && echo Done!

エラーレベル0で返されたDone!場合にのみ出力されます。myProgram.exe

myProgram.exe || PAUSE

myProgram.exeがゼロ以外のエラーレベルを返した場合、バッチファイルが一時停止します。

于 2010-08-11T05:55:31.687 に答える
7

Hellionの答えよりも優れた解決策は、%ERRORLEVEL%環境変数をチェックすることです。

IF %ERRORLEVEL% NEQ 0 (
  REM do something here to address the error
)

IF戻りコードがゼロより大きい値だけでなく、ゼロ以外の場合は、本体を実行します。

コマンドIF ERRORLEVEL 1 ...は負の戻り値を見逃します。一部のプログラムでは、エラーを示すために負の値を使用する場合もあります。

ところで、私はチェランの答え&&および||演算子を使用)が大好きで、すべての人にそれをお勧めします。

このトピックの詳細については、この記事をお読みください

于 2019-09-24T11:47:42.750 に答える