我在尝试在我的批处理脚本上实现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
实施到底出了什么问题?
答案 0 :(得分:0)
错误级别0始终为真。
使用
if not errorlevel 1
但您的代码并未设置错误级别。
答案 1 :(得分:0)
在您的代码中,没有任何设置errorlevel的命令。此值由所有外部.exe命令(如find
或findstr
)以及某些特定内部命令(如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 ...
获得类似的结果