하나의 배치 파일에 2개의 선택 명령이 섞여 있음

하나의 배치 파일에 2개의 선택 명령이 섞여 있음

예:

@echo off
goto menu1

:menu1
cls
echo Menu 1
echo.
echo Press "1" to start control panel
echo.
echo Press "2" to go to second menu
echo.
choice /c 12
if errorlevel ==2 goto menu2
if errorlevel ==1 goto control panel


:menu2
cls
echo Menu 2
echo.
echo Press "1" start msconfig
echo.
echo Press "2" to go to first menu
echo.
choice /c 12
if errorlevel ==2 goto menu1
if errorlevel ==1 goto msconfig


:control panel
cls
start control
goto menu1


:msconfig
cls
start msconfig
goto menu1

그러니 내가 들어가면메뉴12를 누르면메뉴2.

내가 들어가면메뉴22를 누르면메뉴1,

하지만 내가 들어가면메뉴21을 눌러 msconfig를 열면 대신 제어판이 열립니다.메뉴1~하는 동안메뉴2아직 열려있는데 왜이럴까요?

답변1

이렇게 하려면 오류 수준이 아닌 if 명령을 사용할 수 있습니다(반드시). 또한 다음과 같은 변수에 대한 사용자 입력을 받아야 합니다. /p examplemenu1= Enter your choice^> 그러면 사용자가 선택한 내용이 examplemenu1에 삽입되고 if 명령을 사용합니다.

메뉴를 작성하고 문제를 해결하는 더 좋은 방법을 보여 드리겠습니다. 이 메뉴에서는 아무 것도 입력하지 않으면 아무 일도 일어나지 않습니다.

@echo off
:start
:menu1
cls
echo.
echo.
echo Enter 1 and Press Enter to open control panel
echo.
echo Enter 2 and Press Enter to go menu 2
echo.
set /p menu1= Enter your choice then Press Enter^>
if "%menu1%" EQU "1" goto :open-control
if "%menu1%" EQU "2" goto :menu2
goto :menu1

:menu2
Cls
REM I will do the basics
echo Menu 2
echo Type 1 to open msconfig
echo.
echo Type 2 to go back to menu 1
echo.
set /p menu2= Enter your choice and press enter^>
if "%menu2%" EQU "1" goto :open-msconfig
if "%menu2%" EQU "2" goto :menu1
goto :menu2

:open-control
cls
start control
REM People will ping a invalid host to wait
REM But they don't know that you can just use localhost
ping localhost -n 3 >nul
goto :start

:open-msconfig
Cls
start msconfig
ping localhost -n 3 >nul
goto :start

이것을 테스트해보고 효과가 있으면 답장을 보내주세요.

관련 정보