私はWindows 7 Enterpriseを使用しており、条件に応じて0、1、または2を返すバッチファイルからjarを呼び出しています。同じために「System.exit」を使用しました。
以下は私のバッチスクリプトです
@echo off
java -jar "test.jar" %*
set exitcode=%ERRORLEVEL%
echo here is 1st exit code %exitcode%
if %exitcode% == 2 (
VERIFY > nul
set exitcode=%ERRORLEVEL%
echo here is 2nd exit code after VERIFY %exitcode%
call test.exe %*
echo here is 2nd exit code %ERRORLEVEL%
if %ERRORLEVEL% == 0 (
cmd /c "exit /b 0"
call test1.exe -f
echo here is 3rd exit code %errorlevel%
)
)exit /b %errorlevel%
上記のコードで私が行っているのは、jar を呼び出し、それが返すエラーレベルに応じて別の exe を呼び出し、その exe のエラーレベルに応じて 3 番目の exe を呼び出すことです。問題は、私が取得している終了コードは最初に割り当てられた終了コードです。つまり、test.jarが2で存在し、他のexeの実行が成功した後でもエラーレベルが変更されない場合です。そして、3 番目の exe は決して実行されません。を呼び出すさまざまなアプローチを試しました
cmd 終了 /b 0
errorlevel を 0 にリセットしますが、機能しません。