Задача стоит такая.
Есть текстовый файл ,например такой, log.log:
Строки, аналогично представленным выше, записываются в файл с текущим датой и временем, т.е. пополняются периодически.
Требуется найти последнее упоминание фразы "Текст для поиска" и взять от него в переменную дату и время для проверки условия.
Условие должно быть, например, такое:
если с момента последней записи с искомым текстом прошло более 30 минут, то выполнить какое то действие.
Собственно что я смог сделать сам. Создал массив, взял его из файла, выполнил поиск по массиву на совпадение заданному тексту, последнее упоминание берется в переменную.
Но вот как составить условие с временем не знаю, пытался искать но не нашел ничего что помогло бы понять как это сделать.
Есть текстовый файл ,например такой, log.log:
Код:
[History]
10.09.2014 15:23:43= Старт(2)
10.09.2014 15:23:44=Текст для поиска
10.09.2014 15:38:58 Кол=2
10.09.2014 15:38:49= Старт (11)
10.09.2014 15:54:01=Текст для поиска
10.09.2014 15:38:58 Кол=22
10.09.2014 15:55:49= Старт (23)
11.09.2014 7:15:01=Текст для поиска
11.09.2014 7:38:58 Кол=22
11.09.2014 7:55:49= Старт (12)
Строки, аналогично представленным выше, записываются в файл с текущим датой и временем, т.е. пополняются периодически.
Требуется найти последнее упоминание фразы "Текст для поиска" и взять от него в переменную дату и время для проверки условия.
Условие должно быть, например, такое:
если с момента последней записи с искомым текстом прошло более 30 минут, то выполнить какое то действие.
Собственно что я смог сделать сам. Создал массив, взял его из файла, выполнил поиск по массиву на совпадение заданному тексту, последнее упоминание берется в переменную.
Код:
#Include <File.au3>
#include <Array.au3>
Global $i
Global $path = @ScriptDir&"\Log.log"
Local $sStartDateTime, $stat
$Path = @ScriptDir&"\log.log"
If @error Then
MsgBox(4096, "", "Лог создан")
$sStartDateTime = StringFormat("%02d.%02d.%04d %02d:%02d:%02d ", @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
IniWrite("log.log", "History", $sStartDateTime, " log.log создан")
EndIf
dim $stat = IniReadSection($Path,"History")
For $i = 1 To $stat[0][0]
If (StringInStr($stat[$i][1], 'Текст для поиска')) Then
$i1=StringFormat ($stat[$i][0])
EndIf
Next
MsgBox(4096, "", "Последнее совпадение "&$i1)
_ArrayDisplay($stat)
Но вот как составить условие с временем не знаю, пытался искать но не нашел ничего что помогло бы понять как это сделать.