【已解决】求助 取文本内时间 小于当然系统时间30分钟内的行
本帖最后由 53360622 于 2015-5-28 11:09 编辑取文本内时间 小于当然系统时间30分钟内的行。
文本内容如下:
2015/05/24 11:19:22 Service Control Manager 0 7036 admin DHCP Client 服务处于 停止 状态。
2015/05/24 11:19:22 Service Control Manager 0 7036 admin Windows Event Log 服务处于 停止 状态。
2015/05/24 11:19:23 Service Control Manager 0 7036 admin Windows Font Cache Service 服务处于 停止 状态。
2015/05/24 11:19:23 Service Control Manager 0 7036 admin Diagnostic Service Host 服务处于 停止 状态。
2015/05/24 11:19:23 Service Control Manager 0 7036 admin Diagnostic Policy Service 服务处于 停止 状态。
2015/05/24 11:19:23 Service Control Manager 0 7036 admin Function Discovery Resource Publication 服务处于 停止 状态。
2015/05/24 11:19:23 Service Control Manager 0 7036 admin Cryptographic Services 服务处于 停止 状态。
2015/05/24 11:19:25 Service Control Manager 0 7036 admin KSafe service 服务处于 停止 状态。 #include <Array.au3>
#Include <Date.au3>
Local $Str = _
'2015/05/23 10:19:22 Service Control Manager 0 7036 admin DHCP Client 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 10:19:22 Service Control Manager 0 7036 admin Windows Event Log 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 10:19:23 Service Control Manager 0 7036 admin Windows Font Cache Service 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:09:23 Service Control Manager 0 7036 admin Diagnostic Service Host 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:09:23 Service Control Manager 0 7036 admin Diagnostic Policy Service 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:15:23 Service Control Manager 0 7036 admin Function Discovery Resource Publication 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:19:23 Service Control Manager 0 7036 admin Cryptographic Services 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:19:25 Service Control Manager 0 7036 admin KSafe service 服务处于 停止 状态。'
;~MsgBox(0, '原字符串', $Str)
Local $Now = '2015/05/24 11:20:25' ;_Now()
Local $nTime = 30
Local $aSR = StringRegExp($str, '(?m)^(([\d/]+\h+[\d:]+)\V+)', 3)
If @Error Then Exit
Local $i, $sOk = ''
For $i = 1 To UBound($aSR) - 2 Step 2
If _DateDiff('n', $aSR[$i], $Now) < $nTime Then $sOk &= $aSR[$i - 1] & @CRLF
Next
msgbox(0, '小于时间 ' & $Now & ' (' & $nTime & '分钟) 的行', $sOk) 回复 2# afan
谢谢版主 回复 3# 53360622
For $i = 1 To UBound($aSR) - 2 Step 2 好像是会少掉最后的一行 改成For $i = 1 To UBound($aSR) -1 Step 2 就会把所有的统计出来。Local $Str = _
'2015/05/28 12:19:22 Service Control Manager 0 7036 admin DHCP Client 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 10:19:22 Service Control Manager 0 7036 admin Windows Event Log 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 10:19:23 Service Control Manager 0 7036 admin Windows Font Cache Service 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:09:23 Service Control Manager 0 7036 admin Diagnostic Service Host 服务处于 停止 状态。' & @CRLF & _
'2015/05/24 11:09:23 Service Control Manager 0 7036 admin Diagnostic Policy Service 服务处于 停止 状态。' & @CRLF & _
'2015/05/28 12:15:23 Service Control Manager 0 7036 admin Function Discovery Resource Publication 服务处于 停止 状态。' & @CRLF & _
'2015/05/28 12:15:23 Service Control Manager 0 7036 admin Cryptographic Services 服务处于 停止 状态。' & @CRLF & _
'2015/05/28 12:15:24 Service Control Manager 0 7036 admin KSafe service 服务处于 停止 状态。'& @CRLF & _
'2015/05/28 12:15:24 Service Control Manager 0 7036 admin KSafe service 服务处于 停止 状态。'
;~MsgBox(0, '原字符串', $Str)
Local $Now = '2015/05/28 12:16:26' ;_Now()
Local $nTime = 30
Local $aSR = StringRegExp($str, '(?m)^(([\d/]+\h+[\d:]+)\V+)', 3)
If @Error Then Exit
Local $i, $sOk = ''
For $i = 1 To UBound($aSR) - 1 Step 2
If _DateDiff('n', $aSR[$i], $Now) < $nTime Then $sOk &= $aSR[$i - 1] & @CRLF
Next
msgbox(0, '小于时间 ' & $Now & ' (' & $nTime & '分钟) 的行', $sOk) 回复53360622
For $i = 1 To UBound($aSR) - 2 Step 2 好像是会少掉最后的一行 改成For $i = 1 To...
53360622 发表于 2015-5-28 12:27 http://www.autoitx.com/images/common/back.gif
是的应该是 -1,之前测试忘改了… 学习了,正则真难。
页:
[1]