在文件中查找特定字符串并将其复制到新文件

时间:2015-04-27 09:43:58

标签: batch-file

每天我都会在这个位置收到一个文件:

C:\Users\Admin\Desktop\LogTest\GetFile\

我必须搜索包含"错误"的字符串。在该文件中,将该文件中找到的所有错误消息复制到该位置的另一个文件(例如result.txt)。这就是我想要的。我试过这样 - 使用下面的命令创建文件,批处理命令继续运行但在result.txt中没有输出。

(注意:我尽力格式化代码以使其可读,但有很多猜测,因为原始文件根本没有格式(甚至不是换行符)[Stephan])

echo off
for /f "tokens=*" %%A in (C:\Users\Admin\Desktop\LogTest\GetFile\btilog.txt) do ( 
  echo %%A\%folder%
  grep "ERROR" -a5 -b2 %path2% >> Result_%file1%.txt
  if %errorlevel%==0 (
    echo Values Found! logged files into Result_%file2%.txt
  ) else (
    echo No matches found in Result_%file2%.txt
  )
  pause
)

我必须捕获的日志文件示例:在上面的代码中,我刚刚接受了2行和仅仅用于测试的5行。但我希望消息只包含错误。

(注意:不确定,这应该是怎样的,因为原来[Stephan]没有形成):

><ns3:Error.Code>RBR.GEN.GEN.NOTOK</ns3:Error.Code><ns3:Severity.Code>Information</ns3:Severity.Code>< 

@ user3259712:请更正我猜错的地方。也许您还应该解释一下,%folder%,%path2%,%file1%和%file2%来自哪里。

2 个答案:

答案 0 :(得分:1)

对于在文件中搜索,Windows具有Findstr命令。然后,您可以使用redirect operators将结果保存到文件中。

此外,您可能会发现有用的this post

希望这有帮助!

答案 1 :(得分:0)

将输出发送到文件是唯一的问题吗?

find "] ERROR" Test1*.log >errors.txt

使用>创建(或覆盖)文件,使用>>追加(或创建,如果不存在)文件。