Fre*_*zer 8 error-handling batch-file errorlevel
我发现需要向调用批处理脚本的程序报告错误级别.
该脚本将创建一个CSV日志文件,我想检查以显示脚本是否成功运行.
我想说的是类似的东西
IF NOT FIND "[ERR" "test.csv"
Run Code Online (Sandbox Code Playgroud)
或者说,如果字符串"[ERR"不在输出中ERRORLEVEL = 0 ELSE ERRORLEVEL = 1
希望这是有道理的.我确信它很简单,但设置错误级别似乎是一个皇家的痛苦!
dbe*_*ham 11
查找"[ERR""text.csv"如果[ERR找到至少一个,则将ERRORLEVEL设置为0,如果找不到,则设置[ERR为1 .你需要一种方法来反转逻辑.
如果你想要做的就是在没有[ERR找到的情况下立即返回0 ,或者1如果[ERR找到至少一个,那么我将使用以下内容:
find "[ERR" "test.csv" >nul && exit /b 1 || exit /b 0
Run Code Online (Sandbox Code Playgroud)
如果要在稍后返回的变量中捕获结果,则:
find "[ERR" "test.csv" >nul && set "err=1" || set "err=0"
Run Code Online (Sandbox Code Playgroud)
要么
find "[ERR" "test.csv" >nul
set /a "err=!%errorlevel%"
Run Code Online (Sandbox Code Playgroud)
当您准备返回结果时
exit /b %err%
Run Code Online (Sandbox Code Playgroud)
下面是我接受的原始答案,但令人尴尬的错误 :-(
感谢Corey指出逻辑错误.正如他在评论中所说,如果所有行都有[ERR文本,下面的错误代码将只报告错误.
如果找到,FIND将ERRORLEVEL设置为0,如果未找到则设置为1.要反转逻辑,只需使用/ V选项.
Run Code Online (Sandbox Code Playgroud)find /v "[ERR" "test.csv" >nul如果你有一个指示errorlevel的变量集,那么你可以使用EXIT/B来设置ERRORLEVEL
Run Code Online (Sandbox Code Playgroud)set err=1 exit /b %err%
| 归档时间: |
|
| 查看次数: |
25389 次 |
| 最近记录: |