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

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

Ответить
Настройки темы
Любой язык - [решено] Мониторинг файлов в папке с последующим запуском скрипта.

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


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

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


Изменения
Автор: c0t0s
Дата: 04-09-2019
Добрый день!
Есть папки с данными С:\Base\1 и С:\Base\2 в которых периодически появляются файлы с разным разрешением(.pdf и .doc, но можно обозначить просто *.*). Эти файлы после обработки автоматически удаляются, но иногда зависают и накапливаются.. Нужно сделать что-то вроде счетчика файлов, чтобы при накоплении в папке более 6 файлов запускался скрипт( .bat файл, находящийся в С:\Base\1.bat).
Может кто-то сталкивался с чем-то похожим и сможет помочь?

Содержание 1.bat
Код: Выделить весь код
net stop sqlserveragent
del /S /Q С:\Base\1\*.*
del /S /Q С:\Base\2\*.*
net start sqlserveragent
Если для двух папок сделать проблематично - можно сделать для каждой отдельный скрипт. Где-то читал, что мониторинг нескольких папок проблематичен.

Отправлено: 16:00, 04-09-2019

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
	Call :GTR "Z:\Base\1\*.txt" 6 || Echo 1 Больше
	Call :GTR "Z:\Base\2\*.*" 6 || Echo 2 Больше
	Call :GTR "Z:\Base\3\*.vbs" 2 || Echo 3 Больше
Exit /B

:GTR
	FOR /F "usebackq Skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D`) DO Exit /B 1
Exit /B 0
В приложении к Вашему случаю пишИте сами, например:
Код: Выделить весь код
@Echo Off
	Call :GTR "Z:\Base\1\*.txt" 6 || (echo net stop sqlserveragent &echo del /S /Q Z:\Base\1\*.txt &echo net start sqlserveragent)
	Call :GTR "Z:\Base\2\*.*" 6 || (echo net stop sqlserveragent &echo del /S /Q Z:\Base\2\*.* &echo net start sqlserveragent)
	Call :GTR "Z:\Base\3\*.*" 5 || echo Call "Z:\tralala\kuku.bat"
Exit /B

:GTR
	FOR /F "usebackq Skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D`) DO Exit /B 1
Exit /B 0
Батник поместИте в планировщик и делайте с нужным вам интервалом

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


Последний раз редактировалось megaloman, 04-09-2019 в 17:13.

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

Отправлено: 17:02, 04-09-2019 | #2



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

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


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


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

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


Цитата megaloman:
Код:
@Echo Off
Call :GTR "Z:\Base\1\*.txt" 6 || (echo net stop sqlserveragent &echo del /S /Q Z:\Base\1\*.txt &echo net start sqlserveragent)
Call :GTR "Z:\Base\2\*.*" 6 || (echo net stop sqlserveragent &echo del /S /Q Z:\Base\2\*.* &echo net start sqlserveragent)
Call :GTR "Z:\Base\3\*.*" 5 || echo Call "Z:\tralala\kuku.bat"
Exit /B
:GTR
FOR /F "usebackq Skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D`) DO Exit /B 1
Exit /B 0
Батник поместИте в планировщик и делайте с нужным вам интервалом »
Спасибо за помощь! Единственный момент, хотел у Вас уточнить как лучше организовать(более правильно) работу данного скрипта. Выставить в планировщике интервал в 1 минуту или в самом скрипте организовать работу через :loop ? Есть принципиальная разница в данной ситуации?

Отправлено: 10:54, 05-09-2019 | #3


Ветеран


Contributor


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

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


c0t0s, имхо, надёжнее в планировщике. А нужно так часто?

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

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

Отправлено: 11:42, 05-09-2019 | #4


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


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

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


Цитата megaloman:
А нужно так часто? »
Да, нужно мониторить постоянно. Файлы появляются без определенной последовательности в процессе работы(т.е. в любое время суток).. Не знаю как еще можно мониторить, возможно подвесить на zabbix через vfs.dir.count, но это уже другая история). Если знаете интересные варианты - всегда рад выслушать.

Отправлено: 12:49, 05-09-2019 | #5


Ветеран


Contributor


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

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


c0t0s, потом Вы скажете, что Вам не нравится выскакивающее окно cmd ...

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


Отправлено: 12:52, 05-09-2019 | #6


Ветеран


Contributor


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

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


c0t0s, ИМХО, моё предыдущее решение не оптимально: там перестартовывается агент для удаления файлов для каждой папки с превышением количества. Вот вариант: агент перестартовывается в случае, если хотя бы в одной папке есть превышение количества файлов, чистятся только папки с превышением.
Код: Выделить весь код
@Echo Off
	Call :GTR "Z:\Base\1\*.vbs" 6 "@@1"
	Call :GTR "Z:\Base\2\*.vbs" 6 "@@2"
	Call :GTR "Z:\Base\3\*.vbs" 6 "@@3"

	>nul 2>&1 Set "@@" &&(
		echo net stop sqlserveragent
		FOR /F "usebackq tokens=1* delims==" %%f IN (`2^>nul Set "@@"`) DO Echo Del /S /Q %%g
		echo net start sqlserveragent
	)
Exit /B

:GTR
	Set "%~3="
	FOR /F "usebackq Skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D`) DO Set "%~3=%1" &Exit /B 0
Exit /B 0
Для каждого вызова :GTR переменная должна быть своя "@@1","@@2"........
Для реальной работы Echo надо удалить
Может, не стОит так радикально вычищать файлы, может, оставлять некоторое количество?

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


Последний раз редактировалось megaloman, 05-09-2019 в 14:36.

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

Отправлено: 13:25, 05-09-2019 | #7


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


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

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


Цитата megaloman:
Может, не стОит так радикально вычищать файлы, может, оставлять некоторое количество? »
В этом вся суть, нужно вычищать папку при условии, что файлы начали скапливаться. Огромное Вам спасибо еще раз за помощь!

Отправлено: 14:49, 05-09-2019 | #8


Ветеран


Contributor


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

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


c0t0s, Может, вообще не стОит удалять файлы? Это как симптоматическое лечение у медиков: человек уже при смерти, а чувствует себя хорошо. . Зачем-то эти файлы были нужны? Их как-то надо было обработать?
Рискую предположить, что агент по какой-то причине останавливается, и если его просто перезапустить, то файлы обработаются без силовой операции. Может, стОит попробовать мой последний скрипт без удаления (не убирать в for echo или вообще закоментировать или удалить For)?

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


Отправлено: 11:59, 06-09-2019 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Проблема с запуском скрипта в powershell Neerdex Скриптовые языки администрирования Windows 9 15-10-2017 11:43
CMD/BAT - Cкрипт с проверкой доступности ПК в сети и последующим запуском PsExec AlexRus227 Скриптовые языки администрирования Windows 2 31-08-2016 17:00
VBS/WSH/JS - Мониторинг файлов в папке с уведомлением по email mark81 Скриптовые языки администрирования Windows 1 04-12-2014 16:58
Самопроизвольное отключение с последующим запуском только после сброса CMOS refx Непонятные проблемы с Железом 5 06-07-2011 00:20
VBS/WSH/JS - [решено] Архивация файлов с последующим удалением Romano Скриптовые языки администрирования Windows 5 23-03-2011 18:03




 
Переход