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

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

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls

Set LogFile=E:\DDDD\bbb.log
Set N=6

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

Set NN=0
Set i=0

For /F "usebackq delims=" %%s IN ("%LogFile%") Do (
   Set /A NN=!NN!+1
   Set Last=" %%s "
   Set Test=!Last: Error =!
   If Not !Last!==!Test! Set i=!NN!
)  

Set Mess=Нет
If %i% GTR 0 (
   Set /A i=%NN%-%i%+1
   If !i! LEQ %N% Set Mess=Есть
)
Echo %Mess%
Пустые строки в подсчетах не участвуют. Я подразумеваю, что слово-это последовательность символов, ограниченных с обеих сторон пробелами, за исключением случая, когда слово расположено в начале или конце строки, или когда оно единственное в строке. В примере анализируем наличие слова Error. Иначе придётся как-то анализировать знаки пунктуации. Если не принимать такое допущение, в этом случае необходимо вместо имеющейся строки написать
Set Test=!Last:Error=!
Но при этом найдём строку как со словом Error, так и со словом ErrorLevel, например.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-08-2012 в 20:10.

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

Отправлено: 16:54, 15-08-2012 | #5