2017-11-29 7 views
0

일괄 처리를 사용하여 간단한 메뉴 시스템을 만들려고했는데 '고토'또는 입력 부분이 엉망인 지 알 수 없습니다. 도움을 주시면 감사하겠습니다! 잘못된일괄 처리 내 메뉴가 작동하지 않습니다

@echo off 
cls 


echo ==============MENU============== 
echo 1. 
echo 2. 
echo 3. 

echo choose. 
set/p "menuInput" 



if %menuInput%==1 (goto :1) 
if %menuInput%==2 (goto :2) 
if %menuInput%==3 (goto :3) 
else echo error 
:1 echo 1 
:2 echo 2 
:3 echo 3 
+0

등호가 없습니다 :'set/P menuInput ='(따옴표 필요 없음). 변수 이름과'= '사이에 공백을 두지 마십시오. 이름의 일부가됩니다! – aschipfl

답변

-3

은/P를 설정한다.

set /p의 구문이 올바르지 않습니다 set /p menuInput =

+3

잘못된 구문입니다! 명령 프롬프트 창에'set /?'을 입력하고 도움말을주의 깊게 읽으십시오! – aschipfl

0
  1. 보십시오. 도움말을 읽으려면 set /?을 사용하십시오.

  2. 괄호 안의 숫자는 (goto :1)입니다.

  3. else합니다 (if이 성공했다면 제어 :3에 전달 된 것이기 때문에)와 쓸모없는 (같은 논리적 if 같은 행에 있어야합니다) 두 구문이 올바르지 않습니다.

  4. 옵션이 제어되지 않도록 exit /b 또는 goto :eof이 누락되었습니다.

-1

@AlexP, 당신의 구문에서 언급 한 바와 같이 set /p 당신이 set < 공간>/P < 공간> UserInput 사용자 =

를 사용할 필요가

잘못 set/p이 아니며이후에 = 표지가 ​​있어야합니다. 134,이름

SET /P variable=[promptString]

SET & IF ELSE 또한 CHOICE

를 사용하는 방법에 대해 자세히보기 (편집 - 에러 체크를위한 코드 오해의 소지가 제거)를 사용하여 메뉴

샘플 배치 ChoiceSET /PIF Else 메뉴에서 옵션을 선택하십시오.IF ELSE 사용

예 1 (입력 에러 체크) CHOICE 명령(오류 입력 선택)

를 사용

@echo off 

::Your Menu to choose from 
:menu 
cls 
echo ==============MENU============== 
echo 1.command menu item 1 
echo 2.command menu item 2 
echo 3.command menu item 3 
echo. 

set /p userinput= 

if %userinput%==1 (
goto 1 
) else if %userinput%==2 (
goto 2 
) else if %userinput%==3 (
goto 3 
) else (
goto error 
) 

:1 
echo command 1 
pause>nul 
goto menu 
:2 
echo command 2 
pause>nul 
goto menu 
:3 
echo command 3 
pause>nul 
goto menu 

::Incorrect Input go back to menu 
:error 
echo Incorrect User Input 
pause>nul 
goto menu 
:end 
exit 

예 2

@echo off ::Your Menu to choose from :menu cls echo ==============MENU============== echo 1.command menu item 1 echo 2.command menu item 2 echo 3.command menu item 3 ::check and limit user input to selection choice /C 123 /N /M "Your Selection" IF "%ERRORLEVEL%"=="1" goto 1 IF "%ERRORLEVEL%"=="2" goto 2 IF "%ERRORLEVEL%"=="3" goto 3 :1 echo command 1 pause>nul goto menu :2 echo command 2 pause>nul goto menu :3 echo command 3 pause>nul goto menu 
+0

필자의 경험으로는'Set/P'를 사용할 때 아무런 문제가 없다. 옵션/매개 변수 _를 사용할 때 공백으로'Set'을 따를 필요가 없다. – Compo

+0

논리가 잘못되었습니다. 그것은 정확히 옵션 1을 처리하고 다른 경우에는 오류를 표시합니다. 또한 숫자를 비교할 때 IF 명령에/i 스위치를 포함하는 것은 의미가 없습니다 (대문자/소문자 숫자가 없습니다 ...) – Aacini

+0

@Aacini - 문제를 지적 해 주셔서 감사합니다. 그래서 오류 확인 사례를 수정했습니다. – Gourav