检查输出日志文件

时间:2012-09-20 10:54:14

标签: batch-file

我的批处理文件中有一个带有命令输出的日志文件 我想查看此文件并检查是否有错误 这是此文件的行,包含错误:

  

9/20/2012 7:22:34 AM [错误]重新加载资源表时出错:VALUE重复

我该怎么检查呢? 我尝试以下方法:

for /f "tokens=4 %%x in (%TMPLog%) do 
    if "%%x"=="ERROR" SET err=TRUE

但它不起作用。

2 个答案:

答案 0 :(得分:5)

你可以更容易:

findstr /l /c:"[Error]" "%TMPLog%" >nul 2>&1 && set err=1

另一个随机注释:对于布尔变量,我倾向于在变量为真时定义变量的模式,而在变量为假时则不定义。然后你可以简单地用if defined err来检查它,这可以减少错误输入比较值的错误,并且可以在没有延迟扩展的块中正常工作(另一个常见的错误来源)。如果您想知道为什么我使用set err=1代替set err=TRUE

答案 1 :(得分:2)

Joey为您的问题提供了最简单的解决方案。但他没有解释为什么你的代码不起作用。

除非使用了parens,否则整个DO子句必须在一行上。

for /f ... do ...

for /f .... do (
   ...
)

您的搜索条件也有缺陷。

您可以修复您要查找的字符串:

for /f "tokens=4" %%x in (%TMPLog%) do if "%%x"=="[ERROR]" SET err=TRUE

或者您可以修改您要找的位置:

for /f "tokens=5" %%x in (%TMPLog%) do if "%%x"=="ERROR" SET err=TRUE

但我仍然推荐Joey的FINDSTR解决方案而不是任何基于FOR的解决方案。