2016-07-21 14 views
0

지금 당분간 배치를 사용하고 있으며 최근에 ERRORLEVELS가 발생하기 전에 만난 적이없는 문제에 직면했습니다.배치 ERRORLEVEL이 제대로 작동하지 않습니다.

다음은 오류를 과시하기 위해 작성한 간단한 프로그램입니다.

@echo off 
title Choices 
CMD /C EXIT 0 
echo [1] Choice 1 
echo [2] Choice 2 
echo [3] Choice 3 
choice /c 123 /n 
IF ERRORLEVEL 1 GOTO ONE 
IF ERRORLEVEL 2 GOTO TWO 
IF ERRORLEVEL 3 GOTO THREE 
echo Nice you broke it 
pause 
exit 
:ONE 
echo CONGRATS YOU CHOSE 1 
pause 
exit 
:TWO 
echo NICE YOU CHOSE 2 
pause 
exit 
:THREE 
echo OOH YOU CHOSE 3 
pause 
exit 

그것의 매우 간단하고 당신이 할 모든 언론은 숫자이고 그것을 당신이 누른 번호를 것을 말한다. 문제는 내가 언론에 상관없이 항상 1을 눌렀을 때 일어날 결과를 출력합니다. % errorlevel %를 사용했는데 정상적으로 작동했지만 작동이 멈춰서 새 방법 (IF ERRORLEVEL WHATEVER)으로 전환했습니다. 어느 쪽이든 일하지 않을 것이다.

+3

'오류 수준은 1 ** 이상인 경우 오류 수준은 1' ** 의미합니다. 역순으로 사용하거나 'errorlevel 1이 아닌 경우 errorlevel 2' –

답변

0

Microsoft 지원 문서 Testing for a Specific Error Level in Batch Files을 읽어보십시오.

명령 프롬프트 창을 열고 if /?을 실행하고 출력 도움말 (특히 errorlevel에 관한 단락)을 읽습니다.

배치 파일에 대한 솔루션

은 매우 간단, errorlevel에 선 테스트의 순서를 반대로 :

@echo off 
title Choices 
CMD /C EXIT 0 
echo [1] Choice 1 
echo [2] Choice 2 
echo [3] Choice 3 
choice /c 123 /n 
IF ERRORLEVEL 3 GOTO THREE 
IF ERRORLEVEL 2 GOTO TWO 
IF ERRORLEVEL 1 GOTO ONE 
echo Nice you broke it 
pause 
exit 
:ONE 
echo CONGRATS YOU CHOSE 1 
pause 
exit 
:TWO 
echo NICE YOU CHOSE 2 
pause 
exit 
:THREE 
echo OOH YOU CHOSE 3 
pause 
exit