找回密码
 加入
搜索
查看: 3802|回复: 10

[AU3基础] 【已解决】求思路:txt文件里检索到符合条件的内容时自动运行排错程序

  [复制链接]
发表于 2011-5-27 12:16:14 | 显示全部楼层 |阅读模式
本帖最后由 lion.lee 于 2011-5-30 12:03 编辑

背景:公司的一台设备出故障,老是有异常。搞得头很大!
想法:检索其报错的日志文件(txt格式,每当有报错时自动加载在最后几行),当出现指定报错信息时调用自动清除错误的程序。
备注:错误信息以当前时间开头。
 楼主| 发表于 2011-5-27 15:17:21 | 显示全部楼层
自己顶!求大大们得高见!
发表于 2011-5-27 17:40:51 | 显示全部楼层
没有图片,看不懂呀
发表于 2011-5-27 21:05:54 | 显示全部楼层
回复 3# m765555
楼主请在搜索栏输入正则提取,看看是不是你想要的,如果是,你发附件就是那个TXT,自然有人帮你解决
 楼主| 发表于 2011-5-28 08:29:03 | 显示全部楼层
因是在公司上网,对于信息安全要求较高,不能上传附件。请各位大大谅解!
日志关键内容节选:
0  2011-5-28 0:34:28   Alarm: EStop by Operator
2  2011-5-28 0:34:29   Event: Machine went into Critical alarm status
3  2011-5-28 0:34:38   Reset:EStop by Operator
我需要判断的是出现“Alarm: EStop by Operator“错误信息时判断它前面的时间是否与当前时间符合,若符合则启动排错程序。
 楼主| 发表于 2011-5-28 08:31:30 | 显示全部楼层
本帖最后由 lion.lee 于 2011-5-28 08:39 编辑

补充说明:
1、格式:
(一个空格)0(两个空格)2011-5-28(两个空格)0:34:28(三个空格)Alarm: EStop by Operator
2、日志内容:
全部都是一样的格式就跟用Filewrite些的一样,每次追加在最后一行,前面没有ini文件的那种[config]格式。
发表于 2011-5-29 08:13:03 | 显示全部楼层
本帖最后由 jtzxgfy 于 2011-5-29 08:16 编辑

 刚好我在做 炒股软件方面的 自动检测大智慧-大盘macd向下或向上或顶底自动提示软件
只要在高位macd比昨天的减少,且大盘还升的...就自动提示
 

 ;#NoTrayIcon;不在任务栏显示

HotKeySet("^x", "EscC")  ;热键 Ctrl+x键  退出
$file = FileOpen("要检测的文档名或文档路径", 0);打开你要检测的文本文件.
; 检查打开的文件是否可为读
If $file = -1 Then
    MsgBox(0, "错误", "不能打开文件.",5)
    ;Exit
EndIf

  While 1  
       
        $chars = FileRead($file);读取的字符

   ;MsgBox(0, "读取的字符:", $chars)
        $OK = StringInStr( $chars,"Reset:EStop by Operator" );检查某个字符串是否含有指定的子字符串.
If $OK>0 Then;如果有要检测的字符就
Filedelete ("要检测的文档名或文档路径")        ;删除文档,(能删除里面的字符最好,方便重新检测再有出错的字符,我也不懂用什么来删除,只有先删除文件,你的哪个 程序会自动生成文档的)
;启动排错程序
EndIf       
Sleep(6000);暂停60秒

WEnd



Func EscC()
        MsgBox(0, "退出程序:", "",2)
        FileClose($file) ;关闭此前已打开的文本文件.
        Exit
        EndFunc
 楼主| 发表于 2011-5-29 10:54:20 | 显示全部楼层
本帖最后由 lion.lee 于 2011-5-29 11:21 编辑

感谢各位兄弟的帮忙。
经过这几天自己不断的摸索,已经有了初步的代码,就差实际测试了。
ps:不知道昨天的网络怎么回事,就是不能上论坛。
#include <file.au3>
#NoTrayIcon
HotKeySet("^x","quit")
While 1
        $lineno = _FileCountLines("vit.txt")
        $string = FileReadLine("vit.txt", $lineno)
        $time = @YEAR & "-" & @MON & "-" & @MDAY & "  " & @HOUR & ":" & @MIN & ":" & @SEC
        If StringInStr($string, "Alarm: EStop by Operator") <> 0 Then
                MsgBox(0, "错误", "E-stop误报警了!", 1)
                BlockInput(1)
                ;执行排错程序
                BlockInput(0)
                FileWriteLine("vit.txt", @CRLF & "脚本执行时间:" & $time)
        EndIf
        Sleep(1000)
WEnd
Func quit()
        Exit
EndFunc   ;==>quit
 楼主| 发表于 2011-5-29 10:57:55 | 显示全部楼层
各位大大再看看哪里需要修改一下,等我上班测试OK就关闭该问题。
 楼主| 发表于 2011-5-30 12:03:05 | 显示全部楼层
实际运行有问题,还得用_filereadtoarray。
#include <file.au3>
#NoTrayIcon
HotKeySet("^x", "quit")
Global $array
While 1
        _FileReadToArray("vit.txt", $array)
        $No = $array[0]
        $time = @YEAR & "-" & @MON & "-" & @MDAY & "  " & @HOUR & ":" & @MIN & ":" & @SEC
        For $i = $array[0] - 3 To $array[0] Step 1
                If StringInStr($array[$i], "Alarm: EStop by Operator") <> 0 Then
                        MsgBox(0, "错误", "E-stop误报警了!", 1)
                        BlockInput(1)
                        ;执行排错程序
                        BlockInput(0)
                        FileWriteLine("vit.txt", @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF &"脚本执行时间:" & $time)
                EndIf
        Next
        Sleep(1000)
WEnd
Func quit()
        Exit
EndFunc   ;==>quit
发表于 2011-5-30 12:38:15 | 显示全部楼层
用正则表达式提取就是咯
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 01:23 , Processed in 0.084239 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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