【发布时间】:2017-08-17 15:10:04
【问题描述】:
所以我有这个选择:
echo.
echo All done. What would you like to do next?
echo 1. Open output folder
echo 2. Exit
echo.
set /p Choose=" Select 1 or 2 and press Enter: "
if '%Choose%'==1 goto show
if '%Choose%'==2 goto end
问题是,这个脚本检测到除2 之外的任何其他选择为1,这不是我想要的。相反,我希望它在意外输入时循环回choice。互联网告诉我的最接近的事情是:
if '%Choose%'NEQ 1 if '%Choose%'NEQ 2 goto choice
但这取决于任何输入的选择,甚至是1 或2。
【问题讨论】:
-
使用命令
choice而不是set /P,你就没有这个问题了。在命令提示符窗口中运行choice /?寻求帮助。 -
if的两边必须相同,==才会变为真。你已经单引号了第一个,所以你必须单引号第二个。实际上,为了安全起见,请双引号"双方。如果两个if语句都失败,那么做出的选择都不是,所以goto你的第一个echo。说到choice- 您应该将其视为完成工作的另一种方式。大量关于 SO 的示例 - 只需使用顶行中的search框 -
@Mofi 使用
ERRORLEVEL,它在脚本的其他地方使用。我不知道批处理脚本足够好来解决这个问题。 -
@Magoo 成功了,谢谢。您可以将其发布为答案,以便我可以将其设置为这样吗?除非,这将被标记为重复。此外,这是一个我正在尝试为自己定制的现有脚本,所以我没有想出
set /p。这是剧本作者选择的。
标签: batch-file choice