Jak monitorować folder pod kątem zmian i wykonać polecenie, jeśli tak się dzieje, w systemie Windows?

32

Podobne pytania dotyczą systemu Linux i Mac , ale szukam rozwiązania dla systemu Windows.

Problem jest następujący: chcę napisać kilka plików skryptów (js) w folderze i zlecić programowi monitorowanie tego folderu pod kątem zmian plików i dodawania nowych plików oraz uruchamianie polecenia za każdym razem, gdy to nastąpi (aby skompilować je wszystkie w jeden pojedynczy plik).

Rozwiązanie musi:

  1. Monitoruj zarówno zmiany plików, jak i dodawane nowe pliki, w folderze.
  2. Uruchom komendę tylko w przypadku zmiany.

Najlepiej byłoby, gdyby było to wbudowane rozwiązanie (takie jak fragment kodu JScript lub VBscript) lub coś, co nie wymaga instalacji.

Camilo Martin
źródło
zobacz ten blog dla niektórych aplikacji dla systemu Windows.
Vijay,

Odpowiedzi:

3

Istnieje program o nazwie Belvedere, który może załatwić sprawę.

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

Jest to samodzielna aplikacja Windows, która działa w tle.

Skonfigurowałem go do monitorowania folderu pobrań pod kątem plików z określonymi rozszerzeniami z datami ostatniej modyfikacji jednego dnia. Pliki, które znajdzie, zostaną usunięte, ale zamiast tego możesz uruchomić akcję.

dangowans
źródło
Wow - ten wygląda bardzo ładnie. Wybiorę to jako odpowiedź (nawet jeśli już dostałem to, czego potrzebowałem od innej), ponieważ prawdopodobnie jest to o wiele bardziej przydatne i wszechstronne niż to, którego używam, dla innych ludzi (a może mnie w przyszłości!) . +1 i zaakceptowano!
Camilo Martin
2
Belvedere sprawiło, że straciłem wiele godzin, aby w końcu odkryć, że jest pełen nierozwiązanych błędów , zwłaszcza z niestandardowymi poleceniami. Wypróbuj zamiast tego FolderMonitor (i użyj "{0}{1}"w polu parametru, w tym w cudzysłowach). Jedyny problem: nie można zdefiniować osobnego polecenia dla każdego folderu. Tylko jeden na całym świecie.
fregante
@ bfred.it Belvedere ma swoje problemy, ale zadziałało dla mnie. FolderMonitor też wygląda na dobre rozwiązanie. Myślę, że to ten, z którym użytkownik zadał pytanie, zakończył się .
dangowans
13

Miałem dobry sukces ze starym programem o nazwie Log Monitor. Jest starożytny i dawno porzucony. Ale całkiem dobrze służy temu celowi.

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

Kok
źródło
1
Ach, dzięki. Obecnie wypróbowuję inne narzędzie , ale daje +1!
Camilo Martin
ta niesamowita „rzecz” działa doskonale na Windows 10!
mboullouz
7

W tym celu stworzyłem proste narzędzie: https://github.com/benblamey/when_changed

użycie: when_changed (ścieżka pliku) (polecenie) (parametry opcjonalne)

np. when_changed C: \ somedir \ foo.txt myapp.exe pasek wibble 123

Ben
źródło
Podoba mi się, jak to jest elegancki interfejs API. Czy obsługuje rekursywnie foldery?
Camilo Martin
Tak: when_changed C: \ **. Txt foo.exe Chciałem mieć wersję github.com/joh/when-changed dla Windows.
Ben
6

W przypadku zegarków .NET kodowanie jest naprawdę łatwe. Jestem pewien, że ktoś zrobił taki program.

Właśnie znalazłem ten klejnot dla ciebie http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/

bokan
źródło
Wiem, jak łatwo jest to kodować w .NET - po prostu nie chciałem. Ale próbuję tego, który jest darmowy, może po prostu działać! +1 za rekomendację, ta też wydaje się miła.
Camilo Martin
4

Obecnie próbuję tej aplikacji , która wymaga .NET, ale wygląda na to, że działa.

Camilo Martin
źródło
2

Jest to tak powszechny wymóg, że jestem zaskoczony, że nie ma wygodnego narzędzia wbudowanego w sam system operacyjny.

W każdym razie, jak wspomniano wcześniej, z powodzeniem korzystałem z LogMonitora . Znalazłem jednak ten post na blogu i używam teraz Watch 4 Folder .

Mam nadzieję, że to ci pomoże.

Vijay
źródło
+1, ale nie powiedziałbym, że jest to „wspólny wymóg” dla kogokolwiek poza nami, programistami ... I w tym przypadku istnieją systemowe wywołania do monitorowania systemu plików, więc liczy się to jako „integracja systemu operacyjnego”.
Camilo Martin
1
Widziałem to z perspektywy firm i udziałów sieciowych. Zawsze chcesz wiedzieć, kogo winić za brakujące pliki: P. Jestem właśnie w trakcie diagnozowania takiej sytuacji: /
Vijay
2

Jeśli chcesz zrobić wbudowane rozwiązanie za pomocą JScript lub VBScript, to czego szukasz, to monitorowanie systemu plików za pomocą subskrypcji zdarzeń WMI. Zasadniczo piszesz kod, aby monitorować folder i wykonywać akcje wstępne po wykryciu zmiany, takie jak:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... a skrypt działa w odstępach czasu, obserwując wystąpienie tych zdarzeń. Istnieje wiele zasobów, ale oto niektóre z VBScript i Powershell:

mrTomahawk
źródło
1

NirSoft posiada oprogramowanie do monitorowania zmian plików w Windows
FolderChangesView

FolderChangesView to proste narzędzie, które monitoruje wybrany folder lub dysk twardy i wyświetla listę wszystkich nazw plików, które są modyfikowane, tworzone lub usuwane podczas monitorowania folderu. Możesz używać FolderChangesView z dowolnym lokalnym dyskiem lub ze zdalnym udziałem sieciowym, o ile masz uprawnienia do odczytu wybranego folderu.

wprowadź opis zdjęcia tutaj

możesz go pobrać za darmo tutaj
Więcej informacji

AminM
źródło
Wydaje się bardziej narzędziem informacyjnym / debugującym niż narzędziem do automatyzacji, ale nadal jest interesujące.
Camilo Martin
0

Możesz użyć http://jnotify.sourceforge.net/ który subskrybuje zdarzenia monitorowania systemu plików specyficzne dla systemu operacyjnego. Kod ma wiele lat, ale nadal działa (przynajmniej na Windows Server 2013r2 testowałem go wczoraj).

Istnieje również github wskrzeszenie projektu jnotify na https://github.com/redbooth/jnotify który nie oferuje samodzielnej aplikacji demonstracyjnej, ale (zgodnie pewne błędy.

W java7 powinien być też pewien rodzaj systemu plików typu inotify, ale jeszcze go nie testowałem.

andrej
źródło