如何在批处理文件中制作工作菜单?

时间:2018-08-09 20:25:50

标签: batch-file

我正在使用以下代码:

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)
goto :Start

:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

:Start
:menu1
set /a select = 0
cls
call :ColorText 0a "Menu"
echo.
call :ColorText fb "Option1"
echo.
call :ColorText 0b "Option2"
echo.
call :ColorText 0b "Option3"
echo.
call :ColorText 0e "(W and S to scroll and Q to select)"
choice /c:wsq /n > nul
if errorlevel == w goto menu3
if errorlevel == s goto menu2
if errorlevel == q goto Option1
else goto menu1
:Option1
cls
echo This is Option1.
pause
goto Start
:menu2
set /a select = 0
cls
call :ColorText 0a "Menu"
echo.
call :ColorText 0b "Option1"
echo.
call :ColorText fb "Option2"
echo.
call :ColorText 0b "Option3"
echo.
call :ColorText 0e "(W and S to scroll and Q to select)"
choice /c:wsq /n > nul
if errorlevel w{
set /a select = 1
}
if errorlevel s{
set /a select = 3
}
if errorlevel q{
goto Option2
}
if %select%==1 goto menu1
if %select%==3 goto menu3
:menu3
set /a select = 0
cls
call :ColorText 0a "Menu"
echo.
call :ColorText 0b "Option1"
echo.
call :ColorText 0b "Option2"
echo.
call :ColorText fb "Option3"
echo.
call :ColorText 0e "(W and S to scroll and Q to select)"
choice /c:wsq /n > nul
if errorlevel w{
set /a select = 2
}
if errorlevel s{
set /a select = 1
}
if errorlevel q{
goto Option3
}
if %select%==1 goto menu1
if %select%==2 goto menu2
:Option2
cls
echo This is Option2.
pause
goto Start
:Option3
cls
echo This is Option3.
pause
goto Start

当我继续使用 w s q 时,我总是收到错误消息。它会不断跳过应该去的内容,并使用其下面的代码。

我将如何制作它以便贴到其实际标签?

如果可以的话,我可以在命令中使用Enter键和箭头键代替 w s q 吗?

2 个答案:

答案 0 :(得分:2)

errorlevel始终是数字值!

char中定义的第一个choice(在您的情况下为w)会将errorlevel设置为1

char中定义的第二个choice(在您的情况下)会将errorlevel设置为2

...等等...

如此:

choice /c:wsq /n
if %errorlevel%==1 goto menu3
if %errorlevel%==2 goto menu2
if %errorlevel%==3 goto Option1

答案 1 :(得分:1)

这是一个有趣的想法! 4.2e+1 :这是我的处理方式:

:)