找回密码
 加入
搜索
查看: 5074|回复: 5

[效率算法] 【已解决】求助 取文本内时间 小于当然系统时间30分钟内的行

[复制链接]
发表于 2015-5-27 21:11:17 | 显示全部楼层 |阅读模式
本帖最后由 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 服务处于 停止 状态。
发表于 2015-5-28 09:09:31 | 显示全部楼层
#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)
 楼主| 发表于 2015-5-28 11:12:01 | 显示全部楼层
回复 2# afan

谢谢版主
 楼主| 发表于 2015-5-28 12:27:15 | 显示全部楼层
回复 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)
发表于 2015-5-28 20:36:52 | 显示全部楼层
回复  53360622
For $i = 1 To UBound($aSR) - 2 Step 2   好像是会少掉最后的一行   改成For $i = 1 To  ...
53360622 发表于 2015-5-28 12:27



    是的  应该是 -1,之前测试忘改了…
发表于 2015-6-1 04:39:02 | 显示全部楼层
学习了,正则真难。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-25 03:08 , Processed in 0.101009 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表