
Exemplo:
@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
Então, se eu estiver dentromenu1e eu pressiono 2 ele irá paramenu2.
Se eu estiver dentromenu2e eu pressiono 2 ele irá paramenu1,
mas se eu estiver dentromenu2e pressiono 1 para abrir o msconfig, em vez disso ele abre o painel de controle emmenu1enquantomenu2ainda está aberto, por que isso?
Responder1
Para fazer isso você pode (deve) usar o comando if e não o nível de erro. Você também precisará obter a entrada do usuário para uma variável como esta, set /p examplemenu1= Digite sua escolha^> Isso irá inserir o que o usuário escolheu em examplemenu1, então você usará o comando if.
Mostrarei a melhor maneira de escrever um menu e resolver seu problema. Neste menu se alguém não inserir nada, nada acontecerá.
@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
Teste isso e responda se funcionar para você.