2017-12-08 20 views
0

나는 배치를 조금 더 익히는 데 도움이되는 프로젝트를 수행하고 있습니다. 나는 일종의 "UI"를위한 코드를 가지고있다.Windows .batch Choice 명령은 입력에 관계없이 항상 동일한 선택을 선택합니다.

내가 가진 문제를 가지고있는 조각은 이것이다 :

:install_check 
if exist UI (
echo UI is already installed; reinstall? 
CHOICE 
if Errorlevel 1 goto :del 
if Errorlevel 2 goto :return 
cls && goto :install_check 
) 
goto :install_yes 

내가 명명 규칙을 알고 코딩 물건의 일부는 완벽하지 않지만 실행할 때마다이가는 이유는 정말 이유를 볼 수 없습니다 ~ :del까지 입력하면 choice으로 입력됩니다.

스위치를 choice으로 변경하고 한 줄로 모두 이동했지만 여전히 작동하지 않습니다. 중첩 된 if은 컴퓨터에 파일이 있는지 확인하기위한 것이므로 요구 사항이지만 문제 일 수 있습니다.

나는이 사이트를 둘러 보았지만 아무런 도움이되지 않아서 어떤 도움도 기꺼이 받아 들여졌습니다 !!

+0

'choice /? '예제 앞의 마지막 두 줄을 읽으십시오. ('errorlevel x'는 "errorlevel이 x * 이상인 경우"를 의미 함) – Stephan

+0

정말 고마워요! 내 문제가 해결되었습니다. –

답변

2

errorlevel역순으로 -order로 확인하십시오. errorlevel는 N 또는 해결책이 이미 다음 예를 측정 한 바와 같이보다은

따라서

+0

고맙습니다. 제 문제가 해결되었습니다. –

+0

@TommyStewart - 가능한 경우 시간 제한이 있습니다. 답변의 왼쪽에있는 체크 표시를 클릭하여 답변을 수락해야합니다. –

0

위한 true로 해석 될 경우

if errorlevel n 

(사용 수단 기존 레이블 이름)은 코드를 약간 재구성합니다.

:install_check 
ClS 
If Not Exist "UI" GoTo install_yes 
Choice /M "UI is already installed; reinstall" 
If Errorlevel 2 GoTo return 
GoTo del 

코드의 다음 줄/레이블이 :del 인 경우 6 행을 제거 할 수 있습니다.

UI이 파일 대신 디렉토리에 속하면 세 번째 줄을 If Not Exist "UI\" GoTo install_yes으로 바꿉니다.