Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Изначально немного не так реализовал, как вы просили - всего на один файл. Теперь переделал на все файлы с нужным расширением в заданной директории.
Замените Word1-Word4 на нужные вам слова, ну и директорию с логами укажите.
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set LogDir=logs
Set LogExt=txt
Set NOfLastStrings=15

:: Получаем список логов
Set TAlert=false
For /F "tokens=*" %%F In ('Dir "%LogDir%\*.%LogExt%" /B /A-D') Do (
Set LogFile=%LogDir%\%%F
Call :Check
)
:: Действия, если не найдено ни одного из слов во всех логах
If %TAlert%==true (
Echo.
Echo       ALERT  
)
Pause
Exit

:Check
:: Получаем общее количество строк
Set s=0
For /F %%A In (%LogFile%) Do (Set /A s+=1)

:: Убираем начальные строки, оставляем только заданное количество в конце
:: Ищем в строках заданные слова, если не нашлось ни одного - сообщаем
Set /A s-=NOfLastStrings
Set Alert=true
For /F "tokens=* skip=%s%" %%A In (%LogFile%) Do (
Echo %%A|Find "Word1">nul&&Set Alert=false
Echo %%A|Find "Word2">nul&&Set Alert=false
Echo %%A|Find "Word3">nul&&Set Alert=false
Echo %%A|Find "Word4">nul&&Set Alert=false
)

:: Действия, если не найдено ни одного из слов в последних строках
If %Alert%==true (
Echo %LogFile% - Warning 
Set TAlert=true
) Else (
Echo %LogFile% - OK 
)
Exit /B

Последний раз редактировалось Anonymоus, 28-11-2011 в 19:36. Причина: Дополнено

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:06, 28-11-2011 | #2