CMD/BAT - [решено] Обработка логов

Ответить
Аватара пользователя
hvorost

CMD/BAT - [решено] Обработка логов

Сообщение hvorost »

Добрый день!

Помогите написать батник который будет обрабатывать логи программы.

Имеется программа которая ежедневно создает новые лог файл In 21.10.2011.log и Out 21.10.2011.log

Нужно написать батник который будет искать в логе с сегодняшней датой слово error или not connect

и если нашел всю эту строку копировать в новый файл sendmail с добавлением перед копируемой строкой еще адрес support@
Аватара пользователя
hvorost

Re: CMD/BAT - [решено] Обработка логов

Сообщение hvorost »

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 - [решено] Обработка логов

Сообщение hvorost »

А как еще в этот батник добавить, чтобы он создавал файл sendmail если ходя бы один файл не найден?
Аватара пользователя
hvorost

Re: CMD/BAT - [решено] Обработка логов

Сообщение hvorost »

Цитата hvorost:



А как еще в этот батник добавить, чтобы он создавал файл 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 - [решено] Обработка логов

Сообщение Imodem174 »

Спасибо за отличный пример, у меня схожая проблема, но я так и не смог разобраться в выложенном батнике...проблема следующая, есть программа, каждый час она создает новый лог с именем 88.151.108.95_4567-ASUSK-12011102613.log, где 13 в конце-это час, необходимо в логе искать данные, начинающиеся после символа '>' и заканчивающиеся перед символом '
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Обработка логов

Сообщение Foreigner »

Imodem174,

Не совсем понял на счет времени в названии лога (в твоем примере 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 - [решено] Обработка логов

Сообщение Imodem174 »

Спасибо, сейчас попробую...каждый час программа создает новый файл лога, таким образом лог, созданный с 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 - [решено] Обработка логов

Сообщение Imodem174 »

батник работает, но только не циклично, то есть он действительно создает файл с расширением 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
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Обработка логов

Сообщение Foreigner »

Imodem174, Я просто думал, что "> данные
Аватара пользователя
Imodem174

Re: CMD/BAT - [решено] Обработка логов

Сообщение Imodem174 »

Спасибо, на этот раз все работает, только почему-то он пропускает и слова типа ASUSK-1 и UNKNOWNOK...но это как выяснилось на программу, для которой нужны выходные файлы dat не влияет, поэтому можно сказать, что результат положительный!Еще раз спасибо. Хочется так же научиться писать батники и разбираться в этом языке, може посоветуете литературу?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»