web-dev-qa-db-ja.com

バッチファイルは、それが呼び出しているコマンドの終了コードをキャプチャできますか?

基本的に、myapp1.exeを呼び出すバッチファイルがあり、myapp1.exeが終了コード1で終了するとします。バッチファイルでこの情報をキャプチャし、バッチファイルを同じ終了コードで強制終了するか、他のロジックを実行できます。 ?

22
Matt
@echo off
rem ...
set errorlevel=
MyApp1.exe
exit /b %errorlevel%

明示的なバリアントになります。

32
Joey

受け入れられた答えは正しいですが、callを使用して別のバッチスクリプトを呼び出し、その2番目のバッチスクリプトがSetLocalを使用している場合は、解析トリックを使用してこれを実行する必要がある場合があります。これを実行している場合は、exit bの前に次のコードを追加します。

ENDLOCAL&set myvariable=%myvariable%

これで、myvariableの値が呼び出しコンテキストで使用できるようになり、他のスクリプトで値を確認できます。

参照:
https://stackoverflow.com/a/16167938/8959
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/

4
Nate Cook

errorlevel sを使用してみてください。もう少し情報 ここ

4
cofiem

%ERRORLEVEL%は、最後に実行されたコマンドの戻り値を格納します

call program.exe
echo program.exe returns "%ERRORLEVEL%"
IF %ERRORLEVEL% NEQ 0 (
  echo FAILED
)
3
emiliollbb