我发现有必要向调用批处理脚本的程序报告错误级别。

该脚本将创建一个我想检查的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/

10-10 23:41