提取log日志中一定格式的内容(已解决)
本帖最后由 dearmb 于 2011-1-26 14:30 编辑想用fastcopy做一个拷贝工具
fastcopy拷贝生成的日志,有很多我不想要的内容,比如下面的日志
我想读取源log日志,过滤掉没用的信息,比如,下面第2行的时间,第5行的目标,第17行的结果,第20行的时间,第23行的目标,第35行的结果……变成下面的一个新日志,给点提示吧……
2011/01/23 00:11:52 <目标> d:\9 结果: (错误文件: 0 | 错误目录: 0)
2011/01/23 00:12:04 <目标> d:\10 结果: (错误文件: 0 | 错误目录: 0)
……
-------------------------------------------------
FastCopy(ver1.84) 开始于 2011/01/23 00:11:52
<源目录>F:\电影\[电影天堂www.dygod.com].不信地狱-cd1.rmvb
<目标> d:\9
<命令> 同步 - 若重名,则仅复制大小时间不同的文件
无错误
总计读取 = 203.9 MB
总计写入 = 203.9 MB
总计文件 = 1 (0)
总计时间 = 11.63 秒
传输速率 = 17.54 MB/秒
传输文件 = 0.09 文件/秒
结果: (错误文件: 0 | 错误目录: 0)
-------------------------------------------------
FastCopy(ver1.84) 开始于 2011/01/23 00:12:04
<源目录>F:\电影\[电影天堂www.dygod.com].不信地狱-cd1.rmvb
<目标> d:\10
<命令> 同步 - 若重名,则仅复制大小时间不同的文件
无错误
总计读取 = 203.9 MB
总计写入 = 203.9 MB
总计文件 = 1 (0)
总计时间 = 9.80 秒
传输速率 = 20.82 MB/秒
传输文件 = 0.10 文件/秒
结果: (错误文件: 0 | 错误目录: 0)
…… _FileReadToArray读文件到一个数组,跟据每一行的关键字对比,获得你想要的内容 给你一个终极办法,你可以试着修改fastcopy的源代码,然后重新编译{:face (303):} 本帖最后由 smartzbs 于 2011-1-23 15:42 编辑
我这个是笨办法:
#include <Array.au3>
$sFile = "FastCopy.Log"
$sRead = FileRead($sFile, FileGetSize($sFile))
$aDate = StringRegExp($sRead, "(开始于.+)(?:\r)", 3);不含换行
$aSource = StringRegExp($sRead, "(<目标> .+)(?:\r)", 3);不含换行
$aDesk = StringRegExp($sRead, "(结果:.+)", 3);含换行
If BitAND(UBound($aDate)>0, UBound($aDate) = UBound($aSource), UBound($aSource) = UBound($aDesk)) Then
Local $aRe
For $i = 0 To UBound($aRe)-1
$aRe[$i] = $aDate[$i] &" "& $aSource[$i] &" "& $aDesk[$i];" "表示用空格隔开,你爱用什么隔开就用什么
Next
ConsoleWrite(_ArrayToString($aRe, ""))
Else
MsgBox(0,"error", "没有记录数据,或格式不对")
EndIf FastCopy能对比同步不? 给你一个终极办法,你可以试着修改fastcopy的源代码,然后重新编译
蜘蛛抱蛋 发表于 2011-1-23 11:25 http://autoitx.com/images/common/back.gif
这办法谁都能想出来……也是最难的…… 我这个是笨办法:
#include
$sFile = "FastCopy.Log"
$sRead = FileRead($sFile, FileGetSize($sFile) ...
smartzbs 发表于 2011-1-23 15:40 http://autoitx.com/images/common/back.gif
正则?不懂。
估计我就检测一下从左数几个字母而已 FastCopy能对比同步不?
libosir 发表于 2011-1-23 20:53 http://autoitx.com/images/common/back.gif
什么意思? Local $Str = _
'-------------------------------------------------' & @CRLF & _
'FastCopy(ver1.84) 开始于 2011/01/23 00:11:52' & @CRLF & @CRLF & _
'<源目录>F:\电影\[电影天堂www.dygod.com].不信地狱-cd1.rmvb' & @CRLF & _
'<目标> d:\9' & @CRLF & _
'<命令> 同步 - 若重名,则仅复制大小时间不同的文件' & @CRLF & @CRLF & _
'无错误' & @CRLF & @CRLF & _
'总计读取 = 203.9 MB' & @CRLF & _
'总计写入 = 203.9 MB' & @CRLF & _
'总计文件 = 1 (0)' & @CRLF & _
'总计时间 = 11.63 秒' & @CRLF & _
'传输速率 = 17.54 MB/秒' & @CRLF & _
'传输文件 = 0.09 文件/秒' & @CRLF & @CRLF & _
'结果: (错误文件: 0 | 错误目录: 0)' & @CRLF & @CRLF & _
'-------------------------------------------------' & @CRLF & _
'FastCopy(ver1.84) 开始于 2011/01/23 00:12:04' & @CRLF & @CRLF & _
'<源目录>F:\电影\[电影天堂www.dygod.com].不信地狱-cd1.rmvb' & @CRLF & _
'<目标> d:\10' & @CRLF & _
'<命令> 同步 - 若重名,则仅复制大小时间不同的文件' & @CRLF & @CRLF & _
'无错误' & @CRLF & @CRLF & _
'总计读取 = 203.9 MB' & @CRLF & _
'总计写入 = 203.9 MB' & @CRLF & _
'总计文件 = 1 (0)' & @CRLF & _
'总计时间 = 9.80 秒' & @CRLF & _
'传输速率 = 20.82 MB/秒' & @CRLF & _
'传输文件 = 0.10 文件/秒' & @CRLF & @CRLF & _
'结果: (错误文件: 0 | 错误目录: 0)'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '(?s).+?\nFastCopy.+?开始于\h(\V+)\v+.+?\n(<目标>\V+).+?\n(结果\V+(?:\r\n|$))', '$1 $2 $3')
MsgBox(0, '提取结果', $Test) 回复 9# afan
谢谢,就是……看不懂……唉……还得学习……
页:
[1]