首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在提示选择的批处理文件中,答案应触发脚本忽略一个选项

在提示选择的批处理文件中,答案应触发脚本忽略一个选项
EN

Stack Overflow用户
提问于 2014-11-06 22:22:26
回答 4查看 492关注 0票数 1

我正在尝试创建一个批处理文件,它向用户询问一个具有多个(四个)选项的问题。用户选择的选项应触发批处理文件忽略四个选项中的一个。

假设我通常想运行的命令是ECHO "A",ECHO "B",ECHO "C",ECHO "D“。如果这个人把A放进去,我希望他们仍然运行除ECHO "A“之外的所有其他命令。

目前,我提出的解决方案如下

代码语言:javascript
复制
@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,似乎更有效。

也许是因为我今天很早就开始工作了,但我现在想不出更简单的方法来做这件事。所以我希望听到你关于如何减少这个批处理脚本阻塞的想法。

EN

回答 4

Stack Overflow用户

发布于 2014-11-07 00:10:52

这段代码的思想是,它只跳过您选择的那一个。

代码语言:javascript
复制
@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
票数 2
EN

Stack Overflow用户

发布于 2014-11-06 22:39:15

如下所示:

代码语言:javascript
复制
@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
票数 1
EN

Stack Overflow用户

发布于 2014-11-06 23:14:54

这应该能起到作用。

在“调用”之后,批处理“跳回”,并将执行下一步:

代码语言:javascript
复制
@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 :EOF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26781785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档