Что нового

Запуск программы при появлении в логе значения

Omnividente

Новичок
Сообщения
7
Репутация
0
Доброго времени суток.
Следующая задача, есть пополняемый лог файл, необходимо чтобы при появлении в логе определенного значения выполнялась функция, и затем начиналось сканирование сначала, почитав форум ( в програмировании не очень силен) сделал следующее:

Код:
$sFile = 'logs.txt'
$line_number = 1

While 1
            $sRead = FileReadLine($sFile, $line_number)

            While @error <> 0
                        Sleep(1000)
                        $sRead = FileReadLine($sFile, $line_number)
            WEnd 

            $line_number += 1

            $sString_Buy = StringRegExp($sRead, 'Перерыв')
            $sString_Sale = StringRegExp($sRead, 'Окончание')

         If $sString_Buy Then
                     MsgBox(0, "Перерыв", "", 5)

         ElseIf $sString_Sale Then
                    MsgBox(0, "Окончание", "", 5)
             
         EndIf
WEnd


Скрипт срабатывает только если на момент запуска указанные слова имеются в логе, если их нет, то скрипт работает, но при их появлении ничего не происходит
 
A

Alofa

Гость
Код:
Local $hFile, $sSubStrings[2] = ['Перерыв', 'Окончание']

$hFile = FileOpen(@ScriptDir & '\logs.txt')
If $hFile = -1 Then Exit MsgBox(16, "Ошибка", "Невозможно открыть файл.")

While 1
    $sRead = FileRead($hFile)
    If @error = -1 Then ExitLoop
    For $i = 0 To 1
        If StringInStr($sRead, $sSubStrings[$i]) Then MsgBox(64, '', $sSubStrings[$i], 5)
    Next
    Sleep(500)
WEnd

MsgBox(64, '', 'Конец работы.')
FileClose($hFile)
 
Автор
O

Omnividente

Новичок
Сообщения
7
Репутация
0
Аналогично, если при запуске указанное слово в логе есть-сообщение выводится, если нету, а позже появляется то ничего нет.
 
Автор
O

Omnividente

Новичок
Сообщения
7
Репутация
0
Да вот и понять не могу в чем. Что делаю:
Создаю чистый файл файл Logs.txt, открываю его, запускаю скрипт скрипт работает, пишу в нем искомое слово, сохраняю-от скрипта ноль реакций
Если сначала пишу искомое слово, а затем запускаю скрипт - срабатывает единожды, но скрипт не останавливется.
Других параметров в скрипте нет, только этот код, ошибок в консоли нет

UPD. Проблема решилась после добавления
Код:
$hFile = FileOpen('d:\logs.txt', 0)

внутрь While

Код:
While 1
	$hFile = FileOpen('d:\logs_day.txt', 0)
	$sRead = FileRead($hFile)
	For $i = 0 To 1
		If StringInStr($sRead, $sSubStrings[$i]) Then MsgBox(64, '', $sSubStrings[$i], 1)
	Next
	Sleep(300)
WEnd
 
A

Alofa

Гость
Omnividente сказал(а):
... Проблема решилась после добавления
Код:
$hFile = FileOpen('d:\logs.txt', 0)

внутрь While...
Это изврат - так делать нельзя, читайте справку.
 
Автор
O

Omnividente

Новичок
Сообщения
7
Репутация
0
Но по другому не удается достичь нужного результата, предложенный вами скрипт, как я уже говорил не желает полноценно работать
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Omnividente
Создаю чистый файл файл Logs.txt, открываю его, запускаю скрипт скрипт работает, пишу в нем искомое слово, сохраняю
Чистый файл будет открыт в кодировке UTF8. Если нужна другая - укажите
Код:
$hFile = FileOpen(@ScriptDir & '\logs.txt', 512)
 
Верх