Linuxの場合と同様に$?
、Windowsバッチファイル(.bat
)でプログラムの終了ステータスを取得する方法はありますか?
たとえば、プログラムのSystem.exit(0)
実行が成功したときと失敗したときの場合、これらの終了値をファイルSystem.exit(1)
にトラップするにはどうすればよいですか?.bat
5 に答える
%ERRORLEVEL%を使用します。バッチファイルがどのように明確で簡潔であるかが好きではありませんか?:)
何かのようなもの:
java Foo
set exitcode=%ERRORLEVEL%
echo %exitcode%
エラーレベルが上書きされないように、これをバッチファイルの絶対次の行にすることが重要です:)
を使用する場合は注意してください
IF ERRORLEVEL number
バッチファイルの「機能」とは、「エラーレベルが「以上」の場合」を意味します。これは、同等number
性に基づくものではありません。私は今までにそれによって噛まれました:)
Raymond Chenには、ERRORLEVELという名前の優れたブログ投稿があります。 %ERRORLEVEL%ではありません。チェックアウトする価値があります。
また、ほとんどの人がコメントと考えるREMコマンドは実際にはそうではないことも注目に値します。REMコマンドは、常に成功するnopコマンドです。REMの後、エラーレベルは常に0です。
willalwaysfail.bat
REM unless you insert a comment after it
if errorlevel 1 goto fail
失敗することはありません...
主にbulgarの質問に答えますが、他の答えを補完します:
%ERRORLEVEL% を機能させるには、Windows でコマンド拡張機能を有効にする必要があります (これがデフォルトです)。
1 つのセッションの場合:
cmd /E:on
または永続的にレジストリに
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions = 0x01
詳細については:
cmd /?
[]]
通常の外部コマンド操作のほとんどはERRORLEVEL0を返します。これは通常(常にではありませんが)、エラーが発生しなかったことを示します。
c:\> dir
...
c:\> echo %ERRORLEVEL%