【已解决】求思路:txt文件里检索到符合条件的内容时自动运行排错程序
本帖最后由 lion.lee 于 2011-5-30 12:03 编辑背景:公司的一台设备出故障,老是有异常。搞得头很大!
想法:检索其报错的日志文件(txt格式,每当有报错时自动加载在最后几行),当出现指定报错信息时调用自动清除错误的程序。
备注:错误信息以当前时间开头。 自己顶!求大大们得高见! 没有图片,看不懂呀 回复 3# m765555
楼主请在搜索栏输入正则提取,看看是不是你想要的,如果是,你发附件就是那个TXT,自然有人帮你解决 因是在公司上网,对于信息安全要求较高,不能上传附件。请各位大大谅解!
日志关键内容节选:
02011-5-28 0:34:28 Alarm: EStop by Operator
22011-5-28 0:34:29 Event: Machine went into Critical alarm status
32011-5-28 0:34:38 Reset:EStop by Operator
我需要判断的是出现“Alarm: EStop by Operator“错误信息时判断它前面的时间是否与当前时间符合,若符合则启动排错程序。 本帖最后由 lion.lee 于 2011-5-28 08:39 编辑
补充说明:
1、格式:
(一个空格)0(两个空格)2011-5-28(两个空格)0:34:28(三个空格)Alarm: EStop by Operator
2、日志内容:
全部都是一样的格式就跟用Filewrite些的一样,每次追加在最后一行,前面没有ini文件的那种格式。 本帖最后由 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 本帖最后由 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
各位大大再看看哪里需要修改一下,等我上班测试OK就关闭该问题。 实际运行有问题,还得用_filereadtoarray。#include <file.au3>
#NoTrayIcon
HotKeySet("^x", "quit")
Global $array
While 1
_FileReadToArray("vit.txt", $array)
$No = $array
$time = @YEAR & "-" & @MON & "-" & @MDAY & "" & @HOUR & ":" & @MIN & ":" & @SEC
For $i = $array - 3 To $array 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
用正则表达式提取就是咯
页:
[1]