Yuri
AutoIT Гуру
- Сообщения
- 737
- Репутация
- 282
Есть много лог файлов, в которых от 200 до 500 строк.
Задача скрипта найти в файле error.log и вытащить текст
из таких скобок <> и записать в 2_error.log построчно,
все остальные строки записать в 1_error.log
Файл error.log в 365 строк примерно такого содержания:
2010 : любой текст (тут всю строку записать в 1_error.log)
2010 : любой текст <искомый текст> любой текст (тут искомый текст записать в 2_error.log)
Отрабатывает при пустом 1_error.log и пустом 2_error.log за такое время: >Exit code: 0 Time: 1.900
При следующих запусках (дозапись уже идет) время увеличивается: от 2.000 до 2.300
Этот временной показатель нормальный? Или можно как-то код более оптимизированнее составить?
Интересует так же ваше мнение, критика о стиле написания кода.
Вот сам код:
Задача скрипта найти в файле error.log и вытащить текст
из таких скобок <> и записать в 2_error.log построчно,
все остальные строки записать в 1_error.log
Файл error.log в 365 строк примерно такого содержания:
2010 : любой текст (тут всю строку записать в 1_error.log)
2010 : любой текст <искомый текст> любой текст (тут искомый текст записать в 2_error.log)
Отрабатывает при пустом 1_error.log и пустом 2_error.log за такое время: >Exit code: 0 Time: 1.900
При следующих запусках (дозапись уже идет) время увеличивается: от 2.000 до 2.300
Этот временной показатель нормальный? Или можно как-то код более оптимизированнее составить?
Интересует так же ваше мнение, критика о стиле написания кода.
Вот сам код:
Код:
$file = FileOpen("error.log", 0)
If $file = -1 Then
MsgBox(16, "Ошибка", "Не могу открыть файл" & @CRLF & "error.log")
Exit
EndIf
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$MyArrayString = StringRegExp($line, '<(.*?)>', 1, 1)
If @error = 1 Then
Call("Error_1")
Else
Call("Error_2")
EndIf
Wend
FileClose($file)
Func Error_1()
$fileError_1 = FileOpen("1_error.log", 1)
If $fileError_1 = -1 Then
MsgBox(16, "Ошибка", "Не могу открыть файл" & @CRLF & "1_error.log")
Exit
EndIf
FileWrite($fileError_1, $line & @CRLF)
FileClose($fileError_1)
EndFunc
Func Error_2()
$fileError_2 = FileOpen("2_error.log", 1)
If $fileError_2 = -1 Then
MsgBox(16, "Ошибка", "Не могу открыть файл" & @CRLF & "2_error.log")
Exit
EndIf
FileWrite($fileError_2, $MyArrayString[0] & @CRLF)
FileClose($fileError_2)
EndFunc