我有一个如下所示的日志文件 .
[Tue Aug 19 10:45:28 2014] Local / PLPLAN / PL / giuraja @ MSAD / 2172 / Info(1019025)从数据库的规则对象读取规则[PL] [Tue Aug 19 10:45:28 2014] Local / PLPLAN / PL / giuraja @ MSAD / 2172 / Info(1013157)使用带有数据文件[SQL]的[AIF0142.rul]从用户[giuraja @ MSAD]收到命令[导入] . . . . . 用户清除活动[giuraja @ MSAD]实例[1] . .
我想提取以“[Tue Aug 19 10:”开头的行,直到以“Clear Active on User”开头的行,并使用Windows批处理脚本输出到文件 . 我尝试了下面的代码 . 它只输出最后一行 .
@echo off&setlocal enabledelayedexpansion set Month_Num =%date:~4,2%if%Month_Num%== 08 set Month_Name = Aug set Day =%date:~0.3%set Today_Date =%date:~7,2 %set Search_String = [%Day %% Month_Name %% Today_Date%10:for / f“tokens = 1 delims = []”%% a in('find / n“%Search_String%”^ @(more %% a D :\ Hyperion \ ERPI_Actuals_Load \ Logs \ PLPLAN.LOG)> D:\ Hyperion \ ERPI_Actuals_Load \ Logs \ PLPLAN_Temp.txt(for / f“tokens = *”%% a in(D:\ Hyperion \ ERPI_Actuals_Load \ Logs \ PLPLAN_Temp . txt)do(set test = %% a if“!test:~0,20!”equ“Clear Active on User”goto:eof echo %% a))> D:\ Hyperion \ ERPI_Actuals_Load \ Logs \ PLPLAN_Formatted.txt
此致,Ragav .
4 回答
这应该工作(测试)
样品输出 -
干杯,G
我使用了一个名为
q25390541.txt
的文件,其中包含我的测试数据 . 产生newfile.txt
和newfile2.txt
取决于哪个是首选 .这是一个包含(开始和结束行显示)脚本应该完成这项工作 . 您可以修改它以排除行:
EDIT - 最后100行:
下面的批处理文件旨在尽可能快地处理大文件;但是,它会从结果中删除空行:
如果要保留空行,则过程会慢得多 .