Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件根据日志文件给出退出代码_Batch File_Cmd - Fatal编程技术网

Batch file 使用批处理文件根据日志文件给出退出代码

Batch file 使用批处理文件根据日志文件给出退出代码,batch-file,cmd,Batch File,Cmd,我在构建结束时得到一个日志文件,该文件指示我构建的项目的状态。当失败的构建不等于0时,我想使用此日志文件为我提供退出代码1 日志文件: ========== Build: 19 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 如何创建一个批处理文件,查看是否有1个(或更多)失败,并设置 %ERRORLEVEL%=1。未测试: set "log=log.txt" for /f "tokens=5 delims= " %%# in

我在构建结束时得到一个日志文件,该文件指示我构建的项目的状态。当失败的构建不等于0时,我想使用此日志文件为我提供退出代码1

日志文件:

========== Build: 19 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
如何创建一个批处理文件,查看是否有1个(或更多)失败,并设置 %ERRORLEVEL%=1。

未测试:

set "log=log.txt"

for /f "tokens=5 delims= " %%# in ('find "========== Build:" "%log%" ') do set /a fails=%%#

if %fails% neq 0 exit /b 1
未测试:

set "log=log.txt"

for /f "tokens=5 delims= " %%# in ('find "========== Build:" "%log%" ') do set /a fails=%%#

if %fails% neq 0 exit /b 1

如果您只想在成功时将ERRORLEVEL设置为0,如果至少有一次失败,则设置为1,那么只需要一个简单的FINDSTR

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul
如果找到字符串,ERRORLEVEL将为0,否则为1

通过使用
&&
|
运算符,可以根据成功或失败有条件地采取操作

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul && (
  rem Success actions go here
) || (
  rem Failure actions go here
)
因此,如果您想在出现故障时以1的ERRORLEVEL退出,您可以使用:

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul || exit /b 1

如果您只想在成功时将ERRORLEVEL设置为0,如果至少有一次失败,则设置为1,那么只需要一个简单的FINDSTR

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul
如果找到字符串,ERRORLEVEL将为0,否则为1

通过使用
&&
|
运算符,可以根据成功或失败有条件地采取操作

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul && (
  rem Success actions go here
) || (
  rem Failure actions go here
)
因此,如果您想在出现故障时以1的ERRORLEVEL退出,您可以使用:

findstr /rc:"^========== Build: .* succeeded, 0 failed," "log.txt" >nul || exit /b 1

捕获失败计数可能很好,但OP没有要求它。如果目标是一个简单的二进制成功或失败检测,那么只需要一个FINDSTR。捕获失败计数可能很好,但OP没有要求它。如果目标是简单的二进制成功或失败检测,那么只需要一个FINDSTR。