2014-10-01 4 views
0

사용자에게 몇 가지 옵션을 제공 한 다음 입력을 기다립니다. 내 테스트에서 [Enter] 키를 눌러 선택을하면 프로그램이 중단되고 레코딩됩니다. 그것은 나에게 오류를 "(이 시간에 예상치 못한이었다."어떻게 사용자가 전적으로 [Enter] 키를 누를 때 감지 할 수 있습니까?박쥐 파일에서 [Enter] 키를 감지하십시오.

여기

내가 가진거야.

:pickClient 
set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

if %clientNum%==1 (

    set client=client1Name 

) else if %clientNum%==2 (

    set client=client2Name 

) else if /i %clientNum%==E (

    GOTO goAway 

) else if %clientNum%==" " (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 
+0

'ths'의 답변을 '수락'하면 도움말 메뉴의 '둘러보기'를 참조하십시오. – foxidrive

+1

당신은 대문자를 무시하기 위해'/ i' 매개 변수로'if'를 사용하여 프로그램을 단축 할 수 있습니다. – Stephan

+0

감사합니다 @ 스탄! 귀하의 의견에 감사드립니다! 나는 그것이 가능하다는 것을 몰랐다. 이를 반영하도록 코드를 업데이트했습니다. –

답변

2

. 변수 값에서이 같은 문제, 또는 공백을 방지하기 위해, 항상 따옴표로 if에서 변수와 값을 둘러싸는 신중한 :

if "%clientNum%"=="1" (

다음 유효한 문이다

if ""=="1" (

된다

.

+0

도와 주셔서 감사합니다. 따옴표에 대해서는 몰랐습니다. 나는 일괄 처리에 익숙하지 않기 때문에 어떤 도움이든지 대단히 감사합니다. 내 일괄 수정을 할게. –

+0

이것을 덧붙이려면'IF "% clientNum %"== ""'변수가 정의되어 있는지 확인해야합니까? –

+1

아니요, 사실 꽤 비슷합니다. – ths

1

내가 여기! 그것을 알아 냈다 제공 내가 그랬어

set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

IF NOT DEFINED clientNum GOTO pickClient <---I added this line of code. ***** 

if %clientNum%==1 (

    set client=client1Name 

) else if %clientNum%==2 (

    set client=client2Name 

) else if /i %clientNum%==E (

    GOTO goAway 

) else if %clientNum%==" " (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 

UPDATE :. @ THS의 도움이 입력

고마워, 내가 발견 한 나는 변수를 테스트 할 때 따옴표를 사용하여 시작해야 함을 내 자신의 테스트를 통해 나는 다음은 J를 작동하는 것을 발견했다. DEFINED에 대한 테스트는 물론 ust.

set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

if "%clientNum%"=="1" (

    set client=client1Name 

) else if "%clientNum%"=="2" (

    set client=client2Name 

) else if /i "%clientNum%"=="E" (

    GOTO goAway 

) else if "%clientNum%"==" " (

    GOTO pickClient 

) else if "%clientNum%"=="" (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 

따옴표에 유의하십시오. 그의 의견을 높이 평가함으로써 남을 사랑하십시오. 나는 그것을 매우 감사하고있다. 그냥 Enter 키를 누릅니다 경우, 변수는

if %clientNum%==1 (

불법

if ==1 (

될 비어와 비교

관련 문제