CMD/BAT - [решено] Обработка логов
-
hvorost
CMD/BAT - [решено] Обработка логов
Добрый день!
Помогите написать батник который будет обрабатывать логи программы.
Имеется программа которая ежедневно создает новые лог файл In 21.10.2011.log и Out 21.10.2011.log
Нужно написать батник который будет искать в логе с сегодняшней датой слово error или not connect
и если нашел всю эту строку копировать в новый файл sendmail с добавлением перед копируемой строкой еще адрес support@
Помогите написать батник который будет обрабатывать логи программы.
Имеется программа которая ежедневно создает новые лог файл In 21.10.2011.log и Out 21.10.2011.log
Нужно написать батник который будет искать в логе с сегодняшней датой слово error или not connect
и если нашел всю эту строку копировать в новый файл sendmail с добавлением перед копируемой строкой еще адрес support@
-
hvorost
Re: CMD/BAT - [решено] Обработка логов
hvorost,
Код:
Попробуй. Если нет спецсимволоа, то все должно работать
Код:
Код: Выделить всё
@echo off
setlocal
for /f %%i in ('date /t') do set "file=%%i.log"
for %%i in (in out) do (
for /f "tokens=*" %%j in ('findstr /i "\" "%%i %file%"') do 1>>sendmail echo support@%%j
for /f "tokens=*" %%j in ('findstr /i "\" "%%i %file%"') do 1>>sendmail echo support@%%j
)Попробуй. Если нет спецсимволоа, то все должно работать
-
hvorost
Re: CMD/BAT - [решено] Обработка логов
А как еще в этот батник добавить, чтобы он создавал файл sendmail если ходя бы один файл не найден?
-
hvorost
Re: CMD/BAT - [решено] Обработка логов
Цитата hvorost:
А как еще в этот батник добавить, чтобы он создавал файл sendmail если ходя бы один файл не найден?
Код:
А как еще в этот батник добавить, чтобы он создавал файл sendmail если ходя бы один файл не найден?
CMD/BAT - [решено] Обработка логов
Код:
Код: Выделить всё
@echo off
setlocal
for /f %%i in ('date /t') do set "file=%%i.log"
for %%i in (in out) do (
if not exist "%%i %file%" 1>>sendmail echo "%%i %file%" not found
for /f "tokens=*" %%j in ('findstr /i "\" "%%i %file%"') do 1>>sendmail echo support@%%j
for /f "tokens=*" %%j in ('findstr /i "\" "%%i %file%"') do 1>>sendmail echo support@%%j
)-
Imodem174
Re: CMD/BAT - [решено] Обработка логов
Спасибо за отличный пример, у меня схожая проблема, но я так и не смог разобраться в выложенном батнике...проблема следующая, есть программа, каждый час она создает новый лог с именем 88.151.108.95_4567-ASUSK-12011102613.log, где 13 в конце-это час, необходимо в логе искать данные, начинающиеся после символа '>' и заканчивающиеся перед символом '
-
Foreigner
Re: CMD/BAT - [решено] Обработка логов
Imodem174,
Не совсем понял на счет времени в названии лога (в твоем примере 13). Для чего они? Нужно как-то обрабатывать исходя из времени? В остальном, попробуй такой вариант:
Код:
Не совсем понял на счет времени в названии лога (в твоем примере 13). Для чего они? Нужно как-то обрабатывать исходя из времени? В остальном, попробуй такой вариант:
Код:
Код: Выделить всё
@echo off
for %%i in (*.log) do call:1 "%%i"
goto:eof
:1
for /f "tokens=2 delims=" %%i in ('findstr ">[0-9].*-
Imodem174
Re: CMD/BAT - [решено] Обработка логов
Спасибо, сейчас попробую...каждый час программа создает новый файл лога, таким образом лог, созданный с 13 до 14 часов дня называется 88.151.108.95_4567-ASUSK-12011102613.log, лог с 14 до 15 - 88.151.108.95_4567-ASUSK-12011102614.log, с 18 до 19 - 88.151.108.95_4567-ASUSK-12011102618.log. В результате работы батника в папке с логами должны появиться файлы с расширением dat, соответствующие файлам логам и сформированные по вышеизложенным правилам.
-
Imodem174
Re: CMD/BAT - [решено] Обработка логов
батник работает, но только не циклично, то есть он действительно создает файл с расширением dat и копирует в него данные, но только первый пакет, то есть данные которые находятся в начале файла между > и < следующие он уже не копирует(...привожу пример
данные в логе...
95,29787
95,29787
95,29787
95,29787
95,29787
86,23417
86,23417
86,23417
86,23417
ASUSK-1
PmpStat1 = A000
PmpStat2 = 4000
FCFault1 = 00
FCFault2 = 00
FCAlarm = 00
FCLimit = 00
Runtime = 3155.0min
MSW = 1F37
100,32037
100,32037
100,32037
100,32037
100,32037
99,30582
99,30582
99,30582
28,18000
28,18000
13,19350
13,19350
13,19350
13,19350
ASUSK-1
PmpStat2 = 4000
FCFault1 = 00
FCFault2 = 00
FCAlarm = 00
FCLimit = 00
Runtime = 3211.0min
MSW = 1F37
43,20022
43,20022
43,20022
в итоге должен получиться файл с расширением dat с названием от лог файла и следующим содержанием...
95,29787
95,29787
95,29787
95,29787
95,29787
86,23417
86,23417
86,23417
86,23417
100,32037
100,32037
100,32037
100,32037
100,32037
99,30582
99,30582
99,30582
28,18000
28,18000
13,19350
13,19350
13,19350
13,19350
43,20022
43,20022
43,20022
данные в логе...
95,29787
95,29787
95,29787
95,29787
95,29787
86,23417
86,23417
86,23417
86,23417
ASUSK-1
PmpStat1 = A000
PmpStat2 = 4000
FCFault1 = 00
FCFault2 = 00
FCAlarm = 00
FCLimit = 00
Runtime = 3155.0min
MSW = 1F37
100,32037
100,32037
100,32037
100,32037
100,32037
99,30582
99,30582
99,30582
28,18000
28,18000
13,19350
13,19350
13,19350
13,19350
ASUSK-1
PmpStat2 = 4000
FCFault1 = 00
FCFault2 = 00
FCAlarm = 00
FCLimit = 00
Runtime = 3211.0min
MSW = 1F37
43,20022
43,20022
43,20022
в итоге должен получиться файл с расширением dat с названием от лог файла и следующим содержанием...
95,29787
95,29787
95,29787
95,29787
95,29787
86,23417
86,23417
86,23417
86,23417
100,32037
100,32037
100,32037
100,32037
100,32037
99,30582
99,30582
99,30582
28,18000
28,18000
13,19350
13,19350
13,19350
13,19350
43,20022
43,20022
43,20022
-
Foreigner
-
Imodem174
Re: CMD/BAT - [решено] Обработка логов
Спасибо, на этот раз все работает, только почему-то он пропускает и слова типа ASUSK-1 и UNKNOWNOK...но это как выяснилось на программу, для которой нужны выходные файлы dat не влияет, поэтому можно сказать, что результат положительный!Еще раз спасибо. Хочется так же научиться писать батники и разбираться в этом языке, може посоветуете литературу?