您好我正在写一个批处理文件。我的目的是运行一个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文件。
答案 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
...