这是我的代码,我不希望用户必须按Enter键才能做出选择。我试了几件事,但我没试过。
@echo off
:debut mon menu a moi
cls
echo 1.Calculatrice
echo 2.Task manager
echo 3.msconfig
echo 4.Notepad
echo 5.ipconfig
echo 6.quit
echo.
set /p /c choix=" Choisir votre application : "
if "%choix%"=="1" goto menu1
if "%choix%"=="2" goto menu2
if "%choix%"=="3" goto menu3
if "%choix%"=="4" goto menu4
if "%choix%"=="5" goto menu5
if "%choix%"=="6" goto menu6
我没有包含菜单,因为它不相关
答案 0 :(得分:2)
@echo off
cls
echo 1.Calculatrice
echo 2.Task manager
echo 3.msconfig
echo 4.Notepad
echo 5.ipconfig
echo 6.quit
echo.
choice /C 123456 /M "Choisir votre application : "
goto menu%errorlevel%
:menu1
echo Calculatrice
. . .
:menu6
:menu0
echo Quit
choice
命令返回1到6之间的errorlevel值(如果用户按Ctrl-C,则返回0),因此goto menu%errorlevel%
命令direclty转移到所需标签而无需任何其他检查。有关详细信息,请键入:choice /?
答案 1 :(得分:1)
@echo off
setlocal enableextensions disabledelayedexpansion
rem OPTION 1 - Use choice command (if available)
echo ---------------------------------------------------
rem Ask for the options
choice /n /c 1234560 /m "Choisir votre application : "
rem Each option sets a errorlevel in the same order they are included.
rem It is necessary to test in decreasing order
if errorlevel 7 (
echo selected 0
) else if errorlevel 6 (
echo selected 6
) else if errorlevel 5 (
echo selected 5
) else if errorlevel 4 (
echo selected 4
) else if errorlevel 3 (
echo selected 3
) else if errorlevel 2 (
echo selected 2
) else if errorlevel 1 (
echo selected 1
)
rem Alternatively, this sintax can be used
rem In this case the order in the tests is not relevant
if "%errorlevel%"=="1" echo selected 1
if "%errorlevel%"=="2" echo selected 2
if "%errorlevel%"=="3" echo selected 3
if "%errorlevel%"=="4" echo selected 4
if "%errorlevel%"=="5" echo selected 5
if "%errorlevel%"=="6" echo selected 6
if "%errorlevel%"=="7" echo selected 0
rem OPTION 2 - Use xcopy to retrieve the key press
echo ---------------------------------------------------
rem Show the prompt
<nul set /p ".=Choisir votre application : "
rem Retrieve the user input
set "choix=" & for /f "delims=" %%a in ('xcopy /l /w "%~f0" "%~f0" 2^>nul') do if not defined choix set "choix=%%a"
set "choix=%choix:~-1%"
rem Echo user input
echo %choix%