Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - поиск новой строки в тхт файле

Ответить
Настройки темы
CMD/BAT - поиск новой строки в тхт файле

Новый участник


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

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


Добрый день,
Подскажите, возможно ли через cmd реализовать контроль за тхт-шником (точнее лог файлом) чтобы при появлении в файле определенной записи запускалось другое приложение/сценарий (почтовый клиент, рестарт машины и т.п.) ?
Может уже есть готовое решение, но что-то с гуглом в последнее время не дружу.

Отправлено: 20:26, 12-02-2014

 

Ветеран


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

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


Размер лог-файла. Пример лог-файла. Частота проверки.

Отправлено: 20:48, 12-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Если "по-простому", то как-то так:

Код: Выделить весь код
@findstr /i "определённая запись" log.txt>nul&& start "" notepad|| call "%~f0"

Отправлено: 20:59, 12-02-2014 | #3


Ветеран


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

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


Georgio, полагаю, что в коде не хватает скобок.
Код: Выделить весь код
@findstr /i "определённая запись" log.txt && (start "" notepad) || (call "%~f0")

Отправлено: 21:06, 12-02-2014 | #4


Ветеран


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

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


Georgio, при «call …» исчерпается глубина вложенности.

Отправлено: 21:06, 12-02-2014 | #5


Ветеран


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

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


Скобки в данном случае не обязательны, а вот команду "call" действительно лучше заменить на "старую добрую" команду "goto" и добавить префикс "/c:" к ""определённая запись"":

Код: Выделить весь код
:#
@findstr /ic:"определённая запись" log.txt>nul&& start "" notepad|| goto:#
.


Могут быть проблемы, если файл "log.txt" постоянно открыт в программе на запись, тогда лучше работать с постоянно создаваемой копией.

Последний раз редактировалось Georgio, 12-02-2014 в 22:42.


Отправлено: 21:52, 12-02-2014 | #6


Новый участник


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

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


Вложения
Тип файла: txt ERROR.txt
(617 байт, 18 просмотров)

размер в пределах 1 Мб

Частота проверки один-два раза в минуту

Отправлено: 13:32, 13-02-2014 | #7


Пользователь


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

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


Georgio, call можно просто убрать. Ещё со времён ДОСа такой вызов отрабатывался, как вызов без возврата.
То есть, командная строка
Код: Выделить весь код
file.bat
даст нам переход к выполнению file.bat без возврата в вызвавший bat-файл.
Поэтому так:
Код: Выделить весь код
@findstr /i "определённая запись" log.txt && (start "" notepad) || ("%~f0")
Но я бы добавил паузу, чтобы не мучить процессор (и тогда уж лучше goto):
Код: Выделить весь код
echo Wscript.Sleep 5000>"%temp%\sleep5.vbs"
:loop
@findstr /i "определённая запись" log.txt && (start "" notepad) || (
  cscript //NoLogo "%temp%\sleep5.vbs"
  goto loop
)

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Последний раз редактировалось Гуллипут, 16-02-2014 в 22:54. Причина: уточнение

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

Отправлено: 22:46, 16-02-2014 | #8


Ветеран


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

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


Цитата Гуллипут:
Но я бы добавил паузу, чтобы не мучить процессор (и тогда уж лучше goto) »
Браво! Именно поэтому не
Код: Выделить весь код
"%~f0"
и даже не
Код: Выделить весь код
cmd /c "%~f0"
.

Главное, чтобы не
Код: Выделить весь код
%0|%0
(шутка!).

Отправлено: 00:51, 17-02-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - поиск новой строки в тхт файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
CMD/BAT - Поиск строки в файле tmpnikl Скриптовые языки администрирования Windows 9 08-11-2013 21:18
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
CMD/BAT - Поиск и изменение строки в файле. climber89 Скриптовые языки администрирования Windows 2 31-01-2013 13:25
VBS/WSH/JS - Поиск\редактирование строки в текстовом файле pavvel Скриптовые языки администрирования Windows 2 11-04-2012 16:38




 
Переход