これは、彼らが唯一のバッチで使用されるエラーレベルを設定するので、私見出口と出口/ Bが壊れている、アップevery now and thenていますcmd.exeプロセスの終了コードは設定しません。
バッチスクリプトはエラーレベルのチェックを行っている場合、呼び出しは十分です:
REM DoSomeAction.cmd
@echo off
call someprogram.exe
if errorlevel 1 exit /b
REM MainScript.cmd
@echo off
...
call DoSomeAction.cmd
if errorlevel 1 (
...
)
しかし、あなたは& &かを使用したい場合は|| 「正常な」exit /b
を使用した構文(myscript.cmd&&someotherapp.exe
)またはスクリプトは、あなたが実際に(親プロセスにGetExitCodeProcessで取得)プロセスの終了コードを設定したい、プログラムではなく、別のバッチファイルから起動される
@echo off
call thiswillfail.exe 2>nul
if errorlevel 1 goto diewitherror
...
REM This code HAS to be at the end of the batch file
REM The next command just makes sure errorlevel is 0
verify>nul
:diewitherror
@%COMSPEC% /C exit %errorlevel% >nul
とその後、call myscript.cmd&&someotherapp.exe
でそれを呼び出すと仕事をしていますが、cmd.exe /c call yourscript.cmd
同じセッションで実行したバッチスクリプトを使用してシェルの対話セッションを終了することを意味しますか? –
Rigth、私は遠隔地からそのセッションを実行しています。セッションをエラーが発生したコマンドから取得したエラーレベルを返すように、バッチから終了します。 –
私は参照してください。エラーレベルを返す最後の部分は、やや複雑なものです。私はそのセッションを殺すための何らかの方法について考えていましたが、最初にそのPIDを見つける必要がありました。とにかく、あなたは結果を返すことができるように、何か違うものが必要だと思われます... –