2013-05-21 40 views
3

我有一個問題。可以使批處理菜單同時接受多個命令?批量命令輸入菜單

例子:(我的代碼)

@ECHO OFF 

set tries=6 
:top 
cls 
set /a tries=%tries% -1 
if %tries%==0 (
goto penalty 
) 
Echo You have %tries% attempts left. 
Echo Please enter your password to proceed 
set /p password= 
if %password%==Parola ta (
echo Welcome Your Name 
ping localhost -n 5 >nul 
cls 
Echo CONNECTED! 



C: 
CD\ 
CLS 

:MENU 
CLS 

ECHO ============= MENU NAME ============= 
ECHO ------------------------------------- 
ECHO 1. System Information TXT file 
ECHO 2. Selection 2 
ECHO 3. Selection 3 
ECHO 4. Selection 4 
ECHO 5. Selection 5 
ECHO 6. Selection 6 
ECHO 7. Selection 7 
ECHO ------------------------------------- 
ECHO 8. Selection 8 
ECHO ------------------------------------- 
ECHO 9. Selection 9 
ECHO ------------------------------------- 
ECHO ==========PRESS 'Q' TO QUIT========== 
ECHO. 

SET INPUT= 
SET /P INPUT=Please select a number: 

IF /I '%INPUT%'=='1' GOTO Selection1 
IF /I '%INPUT%'=='2' GOTO Selection2 
IF /I '%INPUT%'=='3' GOTO Selection3 
IF /I '%INPUT%'=='4' GOTO Selection4 
IF /I '%INPUT%'=='5' GOTO Selection5 
IF /I '%INPUT%'=='6' GOTO Selection6 
IF /I '%INPUT%'=='7' GOTO Selection7 
IF /I '%INPUT%'=='8' GOTO Selection8 
IF /I '%INPUT%'=='9' GOTO Selection9 
IF /I '%INPUT%'=='Q' GOTO Quit 

CLS 

ECHO ============INVALID INPUT============ 
ECHO ------------------------------------- 
ECHO Please select a number from the Main 
echo Menu [1-9] or select 'Q' to quit. 
ECHO ------------------------------------- 
ECHO ======PRESS ANY KEY TO CONTINUE====== 

PAUSE > NUL 
GOTO MENU 

:Selection1 

systeminfo.exe>systeminfo.txt 

ECHO ============INVALID INPUT============ 
ECHO ------------------------------------- 
ECHO Please select a number from the Main 
echo Menu [1-9] or select 'Q' to quit. 
ECHO ------------------------------------- 
ECHO ======PRESS ANY KEY TO CONTINUE====== 

PAUSE > NUL 
GOTO MENU 


:Selection2 

Call cleanup.bat 

:Selection3 

and in here too... 

:Selection4 

and so on 

:Selection5 

and so on 

:Selection6 

and so on 

:Selection7 

and so on 

:Selection8 

and so on 

:Selection9 

and so on 

:Quit 
CLS 

ECHO ==============THANKYOU=============== 
ECHO ------------------------------------- 
ECHO ======PRESS ANY KEY TO CONTINUE====== 

PAUSE>NUL 
EXIT 

pause 
cls 
) else (
goto top 
) 
goto top 

如何使程序接受比1個命令嗎? 例如1,3,5在同一時間執行?

或另一個問題,它如何可能撤消.exe回到.bat? 有這樣的程序嗎?

回答

3

建議:使從gotocall&串連的命令:

 
IF /I '%INPUT%'=='1' GOTO:Selection1 
IF /I '%INPUT%'=='2' CALL:Selection2&CALL:Selection2&CALL:Selection4 
IF /I '%INPUT%'=='3' CALL:Selection3&CALL:Selection3 
IF /I '%INPUT%'=='4' CALL:Selection4&CALL:Selection4 
IF /I '%INPUT%'=='5' CALL:Selection5 
IF /I '%INPUT%'=='6' CALL:Selection6 
IF /I '%INPUT%'=='7' CALL:Selection7 
IF /I '%INPUT%'=='8' CALL:Selection8 
IF /I '%INPUT%'=='9' CALL:Selection9 
IF /I '%INPUT%'=='Q' GOTO:Quit 

爲了得到這個工作,你必須ALSE跳轉標籤後添加goto:eof(文件eof =結束),例如:

 
:Selection2 
Call cleanup.bat 
goto:eof 

:Selection3 
and in here too... 
goto:eof 

:Selection4 
and so on 
goto:eof 

:Selection5 
and so on 
goto:eof 
... 
.. 
. 

goto:eof將控制返回給主程序。

+0

另一個問題,如何其可能撤消的.exe回到.BAT?有這樣的程序嗎? –

+0

運行它並查看源代碼的'temp'文件夾。 – Endoro

1

您可以使用start "" command關鍵字,每個命令將運行在它自己的窗口中,但是由您的菜單批處理文件啓動。

1

這是你在找什麼?

文件Menu.cmd

@echo off 

    setlocal 

    set quit=false 
    set /p InputChoices=Enter Choice(s) (A,B,C) 
    echo %InputChoices% 
    call :executeChoices %InputChoices% 

    endlocal 

goto :eof 

:executeChoices 

    if [%1]==[] goto :eof 

    call :Step%1 
    shift 
    goto :executeChoices  

goto :eof 

:StepA 
    echo Step A 
goto :eof 

:StepB 
    echo Step B 
goto :eof 

:StepC 
    echo Step C 
goto :eof 

是這樣工作的:

c:\>Menu.cmd 
Enter Choice(s) (A,B,C) b c a 
b c a 
Step B 
Step C 
Step A