我正在尝试创建一个批处理文件,它向用户询问一个具有多个(四个)选项的问题。用户选择的选项应触发批处理文件忽略四个选项中的一个。
假设我通常想运行的命令是ECHO "A",ECHO "B",ECHO "C",ECHO "D“。如果这个人把A放进去,我希望他们仍然运行除ECHO "A“之外的所有其他命令。
目前,我提出的解决方案如下
@echo off
set /p choice="Do you want not to do: A, B, C or D? [A/B/C/D] " [A/B/C/D]
if %choice%==A (
ECHO "B"
ECHO "C"
ECHO "D"
EXIT /b
) else if %choice%==B (
ECHO "A"
ECHO "C"
ECHO "D"
EXIT /b
) else if %choice%==C (
ECHO "A"
ECHO "B"
ECHO "D"
EXIT /b
) else if %choice%==D (
ECHO "A"
ECHO "B"
ECHO "C"
EXIT /b
) ELSE (
ECHO Please select A, B, C or D!
EXIT /b
)但是,正如您可以想象的那样,我使用echo命令作为示例/抽象。实际的命令更长。在A、B、C和D下定义一次命令,然后根据用户的选择告诉批处理文件不要使用doA、B、C或D,似乎更有效。
也许是因为我今天很早就开始工作了,但我现在想不出更简单的方法来做这件事。所以我希望听到你关于如何减少这个批处理脚本阻塞的想法。
发布于 2014-11-07 00:10:52
这段代码的思想是,它只跳过您选择的那一个。
@echo off
set /p choice="Do you want not to do: A, B, C or D? [A/B/C/D] " [A/B/C/D]
if "%choice%"=="" (
ECHO Please select A, B, C or D!
EXIT /b
)
if not %choice%==A (
ECHO "A"
)
if not %choice%==B (
ECHO "B"
)
if not %choice%==C (
ECHO "C"
)
if not %choice%==D (
ECHO "D"
)
exit /b发布于 2014-11-06 22:39:15
如下所示:
@echo off
setlocal enabledelayedexpansion
set "$Command=A B C D"
set /p "$choice=Do you want not to do: A, B, C or D? "
set "$Command=!$Command:%$choice%=!"
for %%a in (!$command!) do echo %%a发布于 2014-11-06 23:14:54
这应该能起到作用。
在“调用”之后,批处理“跳回”,并将执行下一步:
@echo off
set /p choice="Do you want not to do: A, B, C or D? [A/B/C/D] " [A/B/C/D]
if %choice%==A (
CALL :B
CALL :C
CALL :D
EXIT /b
) else if %choice%==B (
CALL :A
CALL :C
CALL :D
EXIT /b
) else if %choice%==C (
CALL :A
CALL :B
CALL :D
EXIT /b
) else if %choice%==D (
CALL :A
CALL :B
CALL :C
EXIT /b
) ELSE (
ECHO Please select A, B, C or D!
EXIT /b
)
:A
<Function here>
GOTO :EOF
:B
<Function here>
GOTO :EOF
:C
<Function here>
GOTO :EOF
:D
<Function here>
GOTO :EOFhttps://stackoverflow.com/questions/26781785
复制相似问题