답변:
1 이상의 리턴 코드를 테스트하십시오.
if ERRORLEVEL 1 echo Error
또는
if %ERRORLEVEL% GEQ 1 echo Error
또는 0과 같은 리턴 코드를 테스트하십시오.
if %ERRORLEVEL% EQU 0 echo OK
GOTO
내가 표시 하는 위치 와 같은 다른 명령을 사용할 수 있습니다 echo
.
0 was unexpected this time.
%ERRORLEVEL%
오류가 발생한 경우에도 0 인 사례를 발견 했습니다. %ERRORLEVEL%
cmd 파일을 체크인 할 때 발생했습니다 . 노력 start /wait
하지 않았다. 효과가 있었던 유일한 것은if errorlevel 1 (...)
NEQ
대신 사용 하는 것이 좋습니다 EQU
. Windows XP가 그렇게하는지 모릅니다. 그러나 그것은 현대 Windows에서 일입니다.
이것은 실제로 다음과 같은 경우에 작동합니다. App1.exe 호출-> .bat 실행-> app2.exe
App2는 오류 수준 1을 반환하지만 .bat에서이를 잡아서 app1에 다시 올리십시오. 그렇지 않으면 .bat는 오류 수준을 먹고 app1은 절대 알 수 없습니다.
방법:
.bat에서 :
app2.exe
if %ERRORLEVEL% GEQ 1 EXIT /B 1
app2 이후의 오류 수준을 확인합니다. > 0이면 .bat가 종료되고 호출 app1에 대해 errorlevel을 1로 설정합니다.
if %ERRORLEVEL% GEQ 1 EXIT /B %ERRORLEVEL%
.
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
더 나은 옵션이 될 수 있습니다. 그러나 실제로 프로그램이 오류에 대해 반환하는 것을 알아야합니다. 일부 프로그램은 특수 유형의 성공을 위해 0이 아닌 특정 코드를 반환합니다.