Windows: скрипт мониторинга файлов (Batch / VBS) - PullRequest
5 голосов
/ 23 апреля 2011

В настоящее время я работаю над сценарием для создания пользовательского сценария резервного копирования, единственная часть которого мне не хватает, это файловый монитор. Мне нужна какая-то форма скрипта, который будет отслеживать папку на предмет изменений файла, а затем запускать команду с измененным файлом.

Так, например, если файл изменяется, он выполнит "c: /syncbatch.bat% Location_Of_File%"

Любая помощь, с которой я должен начать, очень ценится. Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 23 апреля 2011

В VBScript вы можете отслеживать папку на предмет изменений файла, подписавшись на событие WMI __InstanceModificationEvent.Эти статьи содержат пример кода, который вы можете изучить и адаптировать к вашим конкретным потребностям:

0 голосов
/ 16 мая 2012

Вызов WMI довольно загадочен, и это приводит к тому, что служба WMI запускается, что может привести к раздуванию, так как оно довольно большое, и вы действительно не можете отменить запрошенные у него уведомления об изменении файла без перезагрузки.Некоторые люди, экспериментирующие с удаленной печатью из папки Dropbox, обнаружили, что простая программа VBScript, которая запускает бесконечный цикл с 10-секундным вызовом WScript.Sleep в цикле, использует гораздо меньше ресурсов.Конечно, чтобы остановить его, вы должны убить этот сценарий или программу в какой-то триггер выхода, который он может найти, например, с пустым файлом со специальным именем в папке наблюдения, но это все же проще, чем возиться с WMI.

Папка-шпион http://venussoftcorporation.blogspot.com/2010/05/thefolderspy.html - это легковесное графическое приложение для просмотра файлов и папок на основе DOT.NET, которое я раньше использовал для запуска сценариев на основе изменений файлов.Похоже, что новая версия может передать имя файла события запущенной команде.В старой версии я еще не поддерживал информацию о событиях файла, поэтому при запуске мой сценарий должен был создать экземпляр объекта файловой системы и отсканировать просматриваемую папку, чтобы найти новые файлы на основе таких критериев, как метки даты и размеры.

Эта более новая версия позволяет передавать имя файла сценарию, если в необязательной записи вызова сценария вы произнесете myscript.vbs "* f".Кавычки могут быть важны при передаче путей к файлам с пробелами в именах папок.Просто помните, что если вы смотрите события изменения, вы получите их много по мере того, как файл увеличивается или редактируется, обычно вам просто нужно уведомление о добавлении или удалении файла.

Еще один прием, который может сделать ваш скрипт, - поместить файл.размер в переменной, спите в течение нескольких секунд, и проверьте файл еще раз, чтобы увидеть, изменился ли он.если он не изменился за несколько секунд, вы можете предположить, что все, что было создано, сделано, записав его на диск.если он продолжает меняться, просто зацикливаться, пока не станет стабильным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...