我发现需要向调用批处理脚本的程序报告错误级别。
脚本将创建一个我想检查的CSV日志文件,以显示脚本是否成功运行。
我想说的是
IF NOT FIND "[ERR" "test.csv"
或说,如果字符串"[ERR"
不在输出ERRORLEVEL = 0 ELSE ERRORLEVEL = 1
希望这是有道理的。我敢肯定这很简单,但是设置错误级别似乎是$ SE!
查找" [err" text.csv"如果找到至少一个 [ERR
,则将errorlevel设置为0,如果找不到 [ERR
,则将erryLevel设置为0。您需要一种倒转逻辑的方法。
如果您想做的所有要做的是如果找不到[ERR
,请立即返回0,如果找到了至少一个[ERR
,请使用1
,则我将使用以下内容:
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
文本时才报告错误。
查找将把错误度设置为0,如果发现,则将错误设置为1,如果找不到1。扭转 逻辑,只需使用/v选项。
find /v "[ERR" "test.csv" >nul
如果您的变量集指示了errorlevel,则可以 使用退出/b设置ErrorLevel
set err=1 exit /b %err%
请注意,如果errorlevel 大于或等于以下数字,则该命令具有返回true的逻辑!所以
IF ERRORLEVEL 0 (...
返回所有查找命令。如果您只想测试文件中的短语,则需要什么:
find "string" "test.txt" > NUL & IF NOT ERRORLEVEL 1 ECHO String was found
花了我很长时间来解决这个问题!
这是我之前在BAT文件中使用的逻辑。
find "string" "test.txt" > NUL & IF ERRORLEVEL 1 (
ECHO String was NOT found
) ELSE (
ECHO String was found
)
您可以将您想要的任何命令放入IF/else Blocks中。