在命令行中使用命令“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!
)