为什么无论是否找到字符串,Fndstr 在批处理文件中都会返回错误级别代码 0?

为什么无论是否找到字符串,Fndstr 在批处理文件中都会返回错误级别代码 0?

在命令行中使用命令“findstr /b”,然后立即检查错误级别代码时,它工作正常。当我在批处理文件中执行相同操作时,它仅返回错误代码 0。

例子:

myfile.txt 包含值“E2B-01-07,5974,3211”

findstr /b XXX myfile.txt
echo %errorlevel%

此代码将在批处理文件中错误地显示 0,但在命令提示符下正确显示 1。

答案1

如果你在括号块(FOR 循环、IF 块)中执行此操作,那么你需要延迟扩张在结构之前启用:

setlocal enabledelayedexpansion

并在变量名称周围使用感叹号 -!errorlevel!

例如

@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
    echo File:       %%A
    findstr /b "E2B-01-07,5974,3211" "%%A"
    echo Errorlevel: !errorlevel!
)

相关内容