获取用户输入而无需按下回车键

4

这是我的代码,我不希望用户必须按下回车才能进行选择。我尝试了几种方法,但都没有成功。

@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  

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


也许是类似这样的东西:点击此处 - Boss
2
我认为你想要使用choice命令而不是set /p... - Bill_Stewart
2个回答

6
@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
< p > choice 命令返回一个介于 1 和 6 之间的错误级别值(如果用户按下 Ctrl-C,则为 0),因此 goto menu%errorlevel% 命令直接转移到所需的标签,无需进行任何其他检查。有关更多详细信息,请键入:choice /?


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%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接