我发现有必要向调用批处理脚本的程序报告错误级别。
该脚本将创建一个我想检查的CSV日志文件,以显示该脚本是否成功运行。
我想说的是
IF NOT FIND "[ERR" "test.csv"
或说,如果字符串
"[ERR"
不在输出ERRORLEVEL = 0 ELSE ERRORLEVEL = 1
中希望这是有道理的。我敢肯定这很简单,但是在a $ se中设置错误级别似乎是一个皇家难题!
最佳答案
如果找到至少一个[ERR
,则FIND“[ERR”“text.csv”将ERRORLEVEL设置为0,如果未找到[ERR
,则将ERRORLEVEL设置为1。您需要一种反转逻辑的方法。
如果您只想立即返回0(如果没有找到[ERR
),或者返回1
(如果至少找到一个[ERR
),那么我将使用以下命令:
find "[ERR" "test.csv" >nul && exit /b 1 || exit /b 0
如果要将结果捕获到变量中以供稍后返回,则:
find "[ERR" "test.csv" >nul && set "err=1" || set "err=0"
或者
find "[ERR" "test.csv" >nul
set /a "err=!%errorlevel%"
准备好返回结果时
exit /b %err%
以下是我接受的原始答案,但尴尬地是错误:-(
感谢Corey指出逻辑错误。正如他在评论中所说,如果所有行都有
[ERR
文本,则下面的错误代码将仅报告错误。关于batch-file - 从失败的FIND命令进行批量编程设置ERRORLEVEL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13031958/