Windows .batch Choice 命令无论输入如何总是选择相同的选项
Windows .batch Choice command always chooses the same choice no matter input
我正在做一个项目来帮助自己更好地学习批处理。我的代码应该是 "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
,无论我为 [=13 输入什么=].
我已经更改了 choice
开关并将其移动到一行中,但它仍然无法正常工作。它嵌套的 if
是为了检查计算机上是否存在文件,因此这是一项要求,但也可能是问题所在?
我试着在这个网站上四处寻找,但对我的问题没有任何帮助,我们很乐意接受任何帮助!!
检查反向顺序中的errorlevel
。
if errorlevel n
表示如果 errorlevel
是 n 或更大
因此,对于 if errorlevel 1
,errorlevel
2 将被解释为 true
由于已经确定了解决方案,下面的示例(使用您现有的标签名称),稍微重构一下您的代码:
:install_check
ClS
If Not Exist "UI" GoTo install_yes
Choice /M "UI is already installed; reinstall"
If Errorlevel 2 GoTo return
GoTo del
如果代码中的下一个 line/label 是 :del
,您也可以删除第六行。
如果名称 UI
属于一个目录而不是一个文件然后你将第三行更改为 If Not Exist "UI\" GoTo install_yes
.
ERRORLEVEL 不会像 IF 语句一样在控制块内部更新,除非您使用 !ERRORLEVEL!而不是 %ERRORLEVEL% 并在代码的开头使用此命令:setlocal ENABLEDELAYEDEXPANSION
见http://batcheero.blogspot.ca/2007/06/how-to-enabledelayedexpansion.html
我正在做一个项目来帮助自己更好地学习批处理。我的代码应该是 "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
,无论我为 [=13 输入什么=].
我已经更改了 choice
开关并将其移动到一行中,但它仍然无法正常工作。它嵌套的 if
是为了检查计算机上是否存在文件,因此这是一项要求,但也可能是问题所在?
我试着在这个网站上四处寻找,但对我的问题没有任何帮助,我们很乐意接受任何帮助!!
检查反向顺序中的errorlevel
。
if errorlevel n
表示如果 errorlevel
是 n 或更大
因此,对于 if errorlevel 1
errorlevel
2 将被解释为 true
由于已经确定了解决方案,下面的示例(使用您现有的标签名称),稍微重构一下您的代码:
:install_check
ClS
If Not Exist "UI" GoTo install_yes
Choice /M "UI is already installed; reinstall"
If Errorlevel 2 GoTo return
GoTo del
如果代码中的下一个 line/label 是 :del
,您也可以删除第六行。
如果名称 UI
属于一个目录而不是一个文件然后你将第三行更改为 If Not Exist "UI\" GoTo install_yes
.
ERRORLEVEL 不会像 IF 语句一样在控制块内部更新,除非您使用 !ERRORLEVEL!而不是 %ERRORLEVEL% 并在代码的开头使用此命令:setlocal ENABLEDELAYEDEXPANSION
见http://batcheero.blogspot.ca/2007/06/how-to-enabledelayedexpansion.html