无需按Enter即可获取用户输入

时间:2014-12-02 18:46:18

标签: windows batch-file cmd

这是我的代码,我不希望用户必须按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  

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

2 个答案:

答案 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%