Я нахожусь в Windows 7 Enterprise и вызываю банку из пакетного файла, который возвращает 0, 1 или 2 в зависимости от условия, я использовал «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, я вызываю третий exe. Проблема в том, что код выхода, который я получаю, является первым назначенным кодом выхода, т. Е. Если test.jar существует с 2, даже после успешного выполнения других exes уровень ошибки не изменяется. И третий exe никогда не выполняется. Пробовал разные подходы к вызову
cmd выход /b 0
для сброса уровня ошибки до 0, но он не работает.