Как отслеживать папку на наличие изменений и выполнять команду, если она есть, в 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, которое работает в фоновом режиме.

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

dangowans
источник
Ничего себе - это выглядит очень мило. Я выберу это в качестве ответа (даже если я уже получил то, что мне было нужно от другого), поскольку он, вероятно, гораздо более полезен и универсален, чем тот, который я использую, для других людей (и, возможно, меня в будущем!) , +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/

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

В настоящее время я пытаюсь это приложение , которое требует .NET, но похоже, что оно делает свою работу.

Камило Мартин
источник
2

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

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

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

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

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

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

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

mrTomahawk
источник
1

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

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

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

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

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

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

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

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

андрей
источник