Как отслеживать папку на наличие изменений и выполнять команду, если она есть, в Windows?


32

Есть аналогичные вопросы для Linux и Mac , но я здесь после решения Windows.

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

Решение должно:

  1. Отслеживайте как изменения файлов, так и добавление новых файлов в папку.
  2. Запускайте команду, только если есть какие-либо изменения.

Было бы лучше, если бы это было либо встроенное решение (например, фрагмент JScript или VBscript), либо что-то, что не требует установки.


Посмотрите этот блог для некоторых приложений для Windows.
Виджей

Ответы:


3

Есть программа под названием Belvedere, которая может помочь.

http://ca.lifehacker.com/341950/belvedere-automates-your-self+cleaning-pc

Это отдельное приложение для Windows, которое работает в фоновом режиме.

Я настроил его для отслеживания моей папки загрузок на наличие файлов с определенными расширениями с последними изменениями даты дня назад. Файлы, которые он находит, он удаляет, однако вы можете вместо этого запустить действие.


Ничего себе - это выглядит очень мило. Я выберу это в качестве ответа (даже если я уже получил то, что мне было нужно от другого), поскольку он, вероятно, гораздо более полезен и универсален, чем тот, который я использую, для других людей (и, возможно, меня в будущем!) , +1 и принято!
Камило Мартин

2
Бельведер заставил меня потерять часы, чтобы со временем выяснить, что в нем полно нерешенных ошибок , особенно с помощью пользовательских команд. Вместо этого попробуйте FolderMonitor (и используйте "{0}{1}"в поле параметра, включая кавычки). Единственная проблема: вы не можете определить отдельную команду для каждой папки. Только один, глобально.
Фреганте

@ bfred.it У Бельведера есть свои проблемы, но у меня это сработало. FolderMonitor тоже выглядит как хорошее решение. Я думаю , что это один пользователь задает вопрос в конечном итоге с .
dangowans

13

У меня был хороший успех со старой программой под названием Log Monitor. Это древнее и давно заброшенное. Но это служит цели довольно хорошо.

http://www.freeware-guide.com/download/index2.html


1
Ах, спасибо. Я сейчас пробую другую утилиту , но +1!
Камило Мартин

эта потрясающая "вещь" отлично работает на Windows 10!
mboullouz

7

Для этого я создал простую утилиту: https://github.com/benblamey/when_changed

использование: when_changed (путь к файлу) (команда) (необязательные параметры)

например, когда C_ \ somedir \ foo.txt myapp.exe бар колебание 123


Мне нравится, как это элегантный API. Поддерживает ли он рекурсивные папки?
Камило Мартин

Да: когда_изменено C: \ **. Txt foo.exe Я хотел без изменений версию github.com/joh/when-changed для windows.
Бен

6

С папками наблюдения .NET это действительно легко кодировать. Я уверен, что кто-то сделал такую ​​программу.

Просто нашел этот камень для вас http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/


Я знаю, как легко это кодировать в .NET - я просто не хотел. Но я пытаюсь это бесплатно, может работать тоже! +1 за рекомендацию, этот тоже кажется хорошим.
Камило Мартин


2

Это настолько распространенное требование, что я удивлен, что в самой ОС нет встроенной удобной утилиты.

Во всяком случае, как упоминалось ранее, я успешно использовал LogMonitor в прошлом. Однако я нашел этот пост информативным и сейчас использую папку Watch 4 .

Надеюсь, это поможет вам.


+1, но я бы не сказал, что это «общее требование» для всех, кроме нас, разработчиков ... И в этом отношении существуют системные вызовы для мониторинга файловой системы, так что это, как я полагаю, считается «интеграцией с ОС».
Камило Мартин

1
Ну, я видел это с точки зрения бизнеса и сети. Вы всегда хотите знать, кто виноват, когда файлы пропадают без вести: P. Я сейчас нахожусь в процессе диагностики такой ситуации: /
Виджай


2

Если вы хотите создать встроенное решение с использованием JScript или VBScript, то вам нужно искать мониторинг файловой системы с использованием подписок на события WMI. По сути, вы пишете код для мониторинга папки и выполнения действий при обнаружении изменений, таких как:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... и ваш сценарий выполняется с интервалом, отслеживая эти события. Есть много ресурсов, но вот некоторые для VBScript и Powershell:


1

NirSoft имеет программное обеспечение для отслеживания изменений файлов в Windows
FolderChangesView

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

введите описание изображения здесь

Вы можете скачать его бесплатно здесь
Подробнее


Кажется, больше информационного / отладочного инструмента, чем автоматизация, но все еще интересно.
Камило Мартин

0

Вы можете использовать http://jnotify.sourceforge.net/, который подписывается на специфические для os события мониторинга файловой системы. Коду уже несколько лет, но он все еще работает (по крайней мере, на Windows Server 2013r2 я тестировал его вчера).

Существует также github воскрешение проекта jnotify на https://github.com/redbooth/jnotify, которое не предлагает отдельное демонстрационное приложение, но (согласно журналам фиксации) исправляет некоторые ошибки.

В java7 тоже должны быть какие-то inotify-подобные наблюдения за файловой системой, но я еще не тестировал их.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.