无论输入如何,Windows .batch Choice命令总是选择相同的选项

时间:2017-12-08 16:20:51

标签: windows batch-file choice

我正在做一个项目来帮助自己更好地学习批处理。我的代码意味着各种各样的“UI”。

我遇到的问题是:

:install_check
if exist UI (
echo UI is already installed; reinstall?
CHOICE
if Errorlevel 1 goto :del
if Errorlevel 2 goto :return
cls && goto :install_check
)
goto :install_yes

我知道命名约定和一些编码内容并不完美,但我确实没有理由为什么每次运行它都会转到:del无论我为choice键入什么内容

我已经更改了choice个开关,并将其移动到一行,但它仍然不想工作。它嵌套的if用于检查计算机上是否存在文件,因此这是一个要求,但也可能是问题?

我试着在这个网站上四处看看,但没有什么能帮到我的问题,很乐意接受任何帮助!!

3 个答案:

答案 0 :(得分:3)

检查反向顺序中的errorlevel

if errorlevel n

表示errorlevel n 或更高

因此,errorlevel 2将被解释为true的{​​{1}}

答案 1 :(得分:0)

由于已经确定了解决方案,以下示例(使用您现有的标签名称),重新构建您的代码:

:install_check
ClS
If Not Exist "UI" GoTo install_yes
Choice /M "UI is already installed; reinstall"
If Errorlevel 2 GoTo return
GoTo del

如果代码中的下一行/标签为:del,您也可以删除第六行。

如果名称UI属于某个目录而是然后,您将第三行更改为If Not Exist "UI\" GoTo install_yes

答案 2 :(得分:0)

除非使用!ERRORLEVEL !,否则ERRORLEVEL不会在IF语句之类的控制块内更新。而不是%ERRORLEVEL%,并在代码开头使用以下命令:setlocal ENABLEDELAYEDEXPANSION

请参阅http://batcheero.blogspot.ca/2007/06/how-to-enabledelayedexpansion.html