无需按下input即可获取用户input

这里是我的代码,我不希望用户必须按input做出select。 我尝试了几件事,但没有尝试过。

@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 

我没有包含菜单,因为它不相关

 @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之间的错误级别值(如果用户按下Ctrl-C,则返回0),所以不需要任何额外的检查就可以将goto menu%errorlevel%命令直接转移到所需的标签。 有关更多详细信息,请键入: choice /?

 @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%