带有errorlevel的批处理选择命令不起作用

时间:2014-02-03 18:10:09

标签: batch-file

我对选择命令感到困惑。 这是我的代码:

@echo off
:start
cls
echo yes or no?
Choice/c yn
if errorlevel 1 goto yes
if errorlevel 2 goto no
:yes
echo you pressed yes
pause
goto start
:no
echo you pressed no
pause
goto start

问题是我每次都是肯定的。我想出我是否用过这个:

set x=%errorlevel%

然后使用

if %x%==1 goto yes
if %x%==2 goto no

并且脚本运行正常。为什么是这样?我想我记得读过一些关于检查errorlevel实际上可能设置一个新的错误级别,如果是false,或类似的东西。一点帮助?

2 个答案:

答案 0 :(得分:6)

构造if errorlevel n检查errorlevel是否至少为n。因此,如果errorlevel为4,那么所有测试if errorlevel 1if errorlevel 4都会返回true。

进行测试的方法是从较高的错误级别到较低的错误级别

if errorlevel 2 goto no
if errorlevel 1 goto yes

答案 1 :(得分:3)

您可以使用提到的语法MC ND,或者使用更清晰的

语法
if %errorlevel%==1 goto yes
if %errorlevel%==2 goto no