批处理ERRORLEVEL始终为0

时间:2015-08-01 22:32:25

标签: batch-file for-loop errorlevel

我在尝试在我的批处理脚本上实现ERRORLEVEL时遇到问题。基本上我要做的是:查找目录中的.txt文件,如果找到的话; .txt将被列出,如果没有找到;将发生消息错误。

问题是这个目录并不总是包含.txt,有时它会是空的,当发生这种情况时我的代码将无效。只有当目录中有.txt我才能让我的条件有效(ERRORLEVEL = 0),但如果是空的话;没有我的条件会。甚至不会在cmd屏幕上打印ERRORLEVEL(我应该将其视为ERRORLEVEL = 1)。

这是我的代码:

for /r "C:\Texts" %%a in (*.txt) do ( 
echo %errorlevel%
IF ERRORLEVEL 0 (    
    echo %%a
    echo "I found your Text!"
    ) ELSE (
        echo "I couldn`t find your Text!" )
    )

我的ERRORLEVEL实施到底出了什么问题?

2 个答案:

答案 0 :(得分:0)

错误级别0始终为真。

使用

if not errorlevel 1

但您的代码并未设置错误级别。

答案 1 :(得分:0)

在您的代码中,没有任何设置errorlevel的命令。此值由所有外部.exe命令(如findfindstr)以及某些特定内部命令(如verify在其参数错误时设置errorlevel = 1设置,或者始终设置errorlevel = 0的ver

您可以通过以下方式在代码中明确设置此值:

rem Set the errorlevel to 1
verify bad 2> NUL

for /r "C:\Texts" %%a in (*.txt) do (
   echo %%a
   rem Set the errorlevel to 0
   ver > NUL
)

if not ERRORLEVEL 1 (
   echo "I found your Text!"
) else (
   echo "I couldn't find your Text!"
)

但是,您也可以使用Batch变量而不是errorlevel ...

获得类似的结果