本帖最后由 soarhu 于 2019-1-17 13:03 编辑
现在有10个文件(名字:file_name_c1, file_name_c2,....,file_name_c10 ),每个文件size大概为1M ~ 50M。
每个文件都包含这两行,
其中一行包含 BUFFER POOL AND
另外一行包含 DATABASE USAGE
从这些文件中读取这两行之间的内容,添加一行文字来作为分隔,另存为一个新文件。
我根据帮助文档和bathome.net写了一个批处理,能够运行,
目前的问题效率较低(现在需要5分钟时间),不知诸位有何建议来改进提高效率,提前谢谢诸位的关注和帮助,欢迎点评和建议!- @echo off on & setlocal enabledelayedexpansion
- cls
- set new_name=newf01
-
- for /L %%i in (1,1,10) do (
- set /a cc_i=%%i
- call :next !cc_i!
- )
- goto :eof
- :next
- @echo off
- set file_name=pf_s%1.f01
- for /F " delims=" %%i in (%file_name%) do (
- set "s=%%i"
- if not "!s:BUFFER POOL AND=!" == "!s!" (set flag=) else if defined flag echo;!s!>>%new_name%.txt
- if not "!s:DATABASE USAGE=!" == "!s!" set "flag=1"
- if not "!s:DATABASE USAGE=!" == "!s!" echo ---%~dp0 --- %file_name% --- %date% --- >>%new_name%.txt
- )
复制代码 编辑添加 goto :eof
希望生成的新文件格式如下:
---file_path--- file_name1 --- date ---
text between line_keyword_a and line_keyword_b in file1
---file_path--- file_name2--- date ---
text between line_keyword_a and line_keyword_b in file2
---file_path--- file_name3--- date ---
text between line_keyword_a and line_keyword_b in file3
...
...
...
---file_path--- file_name10--- date ---
text between line_keyword_a and line_keyword_b in file10 |