2014-12-02 126 views
1

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

也许它的某些内容[像这样](http://stackoverflow.com/questions/1816298/how-to-set-read-command-to-execute-without-having-to-按进入按钮在壳) – Boss 2014-12-02 18:53:50

+1

我想你想[选择](http://technet.microsoft.com/en-us/library/cc732504.aspx)命令,而不是'set/p' .. 。 – 2014-12-02 19:11:51

回答

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