1

我在批处理脚本中有这个菜单:

ECHO *1* - A
ECHO *2* - B
ECHO *3* - C
ECHO *4* - D
ECHO *5* - runAll
ECHO *6* - Quit

现在,我用它做的是如果用户输入 1,然后它运行第一个并循环回到菜单,第二个是 2,依此类推。
如果用户输入 5,那么我的脚本将运行 1 到 4 步循序渐进。

我的问题是:“是否可以运行/执行您选择执行的某些任务?”
假设我想执行 1 & 4 并循环回到主菜单。我输入“1(空格)4”,脚本获取这些参数/参数并找到相应的选项并执行它。是否有意义?是否可以?

我确实可以选择单独运行这些选项中的每一个,但是我正在谈论的这个想法使它更有效和更快。

4

1 回答 1

3
:begin
ECHO *1* - A
ECHO *2* - B
ECHO *3* - C
ECHO *4* - D
ECHO *5* - runAll
ECHO *6* - Quit

set /p CH=choose
for /f  "tokens=* delims= " %%A in ("%CH%") DO (
    if *%%A* EQU *1* call A
    ....
    if *%%A* EQU *4* call D
    if *%%A* EQU *5* call :callAll
    if *%%A* EQU *6* exit
)
goto :begin

:callAll
    call A
    ...
    call D
goto :eof

编辑:

:begin
ECHO *1* - A
ECHO *2* - B
ECHO *3* - C
ECHO *4* - D
ECHO *5* - runAll
ECHO *6* - Quit

set /p CH=choose
echo nul >temp.bat
set line=title "temp script"
for /f  "tokens=* delims=;, " %%A in ("%CH%") DO (
    if *%%A* EQU *1* set line=%line% &call A 
    ....
    if *%%A* EQU *4* set line=%line% &call D 
    if *%%A* EQU *5* call :callAll
    if *%%A* EQU *6* exit
)
echo %line% >>temp.bat
call temp.bat
del /s /q /f temp.bat
goto :begin

:callAll
    line=%line% &call A 
    ...
    line=%line% &call D 
goto :eof

这将创建(并在执行后删除)一个临时脚本,该脚本将在输入选项后执行。您也可以创建自己编辑的脚本,但代码将更难以维护。for 循环处理“客户”输入的数据并执行所有以空格分隔的数字。在“delims =”中,您可以添加逗号、分号和您想要的内容。

于 2012-07-11T15:01:59.243 回答