所以我有这个选择:
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
。
答案 0 :(得分:1)
使用此代码,任何用户都无法按下除1或2之外的任何内容(或Ctrl + C以中断批处理文件执行),并在按下 1 或<之后立即继续执行脚本处理KBD> 2
@echo off
echo/
echo All done. What would you like to do next?
echo/
echo 1. Open output folder
echo 2. Exit
echo/
%SystemRoot%\System32\choice.exe /C 12 /N /M "Select 1 or 2: "
if errorlevel 2 goto :EOF
rem Code to run on open output folder.
echo Use selected 1.
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
choice /?
echo /?
if /?
goto /?
rem /?
另请阅读Microsoft支持文章Testing for a Specific Error Level in Batch Files,为什么它只能使用if errorlevel 2 goto :EOF
,因为唯一剩下的选项是errorlevel
在执行choice
后的值为1
另请阅读DosTips论坛主题ECHO. FAILS to give text or blank line - Instead use ECHO/为什么最好使用echo/
代替echo.
输出空行。
另请阅读:
答案 1 :(得分:1)
一个if的两边必须相同才能使==变为真。你已经单引第一个,所以你必须单引第二个。实际上,双引号&#34;双方都是为了安全。如果两个if语句都失败了,那么所做的选择都不是,所以转到你的第一个回声。说到选择 - 您应该将其视为完成工作的另一种方式。关于SO的大量例子 - 只需使用顶行的搜索框