需要帮助来检查错误日志并决定继续或退出

时间:2016-01-21 17:09:29

标签: windows batch-file

您好我正在写一个批处理文件。我的目的是运行一个commond,并在“log.txt”中捕获日志文件,如果这个log.txt文件包含“返回代码:8”或“返回代码:12”或“返回代码:16”我必须停止执行留下来。

示例批处理文件如下(SAP Transport)

For /F "tokens=1,2" %%a in (trlist.txt) do (
  tp import %%a SYSTEMID client=%%b u01 pf=c:\trans\sap\bin\dbc.pfl 1>>c:\log.txt 2>&1
  findstr /C:"return code: 8" c:\log.txt
  if errorlevel 0 goto END
  findstr /C:"return code: 12" c:\log.txt
  if errorlevel 0 goto END
  findstr /C:"return code: 16" c:\log.txt
  if errorlevel 0 goto END
)

Echo "Processed successfully ...:">c:\result.txt
Echo "Check the c:\log.txt file " >>c:\result.txt
Exit

:END
Echo "Error occured... " > c:\result.txt
Echo "Check the c:\log.txt file." >>c:\result.txt
Exit.

每次执行TP后,检查log.txt文件。如果这包含任何上述返回代码,则应停止进一步执行。

脚本通过“返回代码:4”和“返回代码:0”退出,不应该退出。

我在Windows 2008服务器上运行上面的bat文件。

1 个答案:

答案 0 :(得分:0)

来自R H L'的链接:

  如果返回码等于或高于指定的errorlevel

,则

IF ERRORLEVEL返回TRUE

这意味着当您检查ERRORLEVEL 0时, 始终 将返回true。您需要检查ERRORLEVEL 1,如果找不到您的字符串将返回true,或检查NOT ERRORLEVEL 1,如果找到您的字符串,则返回true。

像这样:

...
findstr /C:"return code: 8" c:\log.txt
  if not errorlevel 1 goto END
...