Wie kann ich unter Windows einen Ordner auf Änderungen überwachen und gegebenenfalls einen Befehl ausführen?


32

Es gibt ähnliche Fragen für Linux und Mac , aber ich bin nach einer Windows-Lösung hier.

Das Problem ist wie folgt: Ich möchte mehrere (js) Skriptdateien in einen Ordner schreiben und diesen Ordner von einem Programm auf Dateiänderungen und das Hinzufügen neuer Dateien überwachen lassen und in jedem Fall einen Befehl ausführen (um alle zu einer zusammenzufassen) einzelne Datei).

Die Lösung muss:

  1. Überwachen Sie sowohl Dateiänderungen als auch das Hinzufügen neuer Dateien in einem Ordner.
  2. Führen Sie einen Befehl nur aus, wenn sich Änderungen ergeben.

Es ist am besten, wenn es sich um eine integrierte Lösung handelt (wie ein JScript- oder VBscript-Snippet) oder um eine Lösung, die keine Installation erfordert.


In diesem Blog finden Sie einige Apps für Windows.
Vijay

Antworten:


3

Es gibt ein Programm namens Belvedere, das den Trick machen könnte.

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

Es ist eine eigenständige Windows-App, die im Hintergrund ausgeführt wird.

Ich habe es so eingerichtet, dass mein Download-Ordner auf Dateien mit bestimmten Erweiterungen mit den letzten Änderungsdaten eines Tages überwacht wird. Die gefundenen Dateien werden gelöscht. Sie können jedoch stattdessen eine Aktion ausführen.


Wow - das sieht super gut aus. Ich werde dies als Antwort wählen (auch wenn ich bereits das bekommen habe, was ich von einem anderen brauchte), da es wahrscheinlich viel nützlicher und vielseitiger ist als das, was ich benutze, für andere Leute (und vielleicht für mich in der Zukunft!). . +1 und akzeptiert!
Camilo Martin

2
Durch Belvedere habe ich Stunden verloren, um schließlich herauszufinden, dass es voller ungelöster Fehler ist , insbesondere mit benutzerdefinierten Befehlen. Versuchen Sie stattdessen FolderMonitor (und verwenden Sie dies "{0}{1}"im Parameterfeld, einschließlich der Anführungszeichen). Einziges Problem: Sie können nicht für jeden Ordner einen eigenen Befehl definieren. Nur eine, weltweit.
Fregante

@ bfred.it Belvedere hat seine Probleme, aber es hat bei mir funktioniert. FolderMonitor scheint auch eine gute Lösung zu sein. Ich denke, es ist derjenige, mit dem der Benutzer die Frage gestellt hat .
Dangowans



6

Mit .NET-Watchfoldern ist das wirklich einfach zu programmieren. Ich bin sicher, dass jemand ein solches Programm gemacht hat.

Habe gerade dieses Juwel für dich gefunden http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/


Mir ist bewusst, wie einfach es ist, dies in .NET zu codieren - ich wollte es einfach nicht. Aber ich versuche dieses, das frei ist, kann gerade auch arbeiten! +1 für die Empfehlung, dass man auch nett erscheint.
Camilo Martin


2

Dies ist eine so häufige Anforderung, dass ich überrascht bin, dass das Betriebssystem selbst kein praktisches Dienstprogramm enthält.

Wie bereits erwähnt, habe ich LogMonitor in der Vergangenheit erfolgreich eingesetzt. Ich fand diesen Blog-Beitrag jedoch informativ und verwende jetzt Watch 4 Folder .

Hoffentlich hilft dir das weiter.


+1, aber ich würde nicht sagen, dass es eine "allgemeine Anforderung" für alle außer uns Entwicklern ist. Außerdem gibt es Systemaufrufe zum Überwachen des Dateisystems, was meiner Meinung nach als "Betriebssystemintegration" gilt.
Camilo Martin

1
Nun, ich habe es aus der Perspektive von Unternehmen und Netzwerkfreigaben gesehen. Sie möchten immer wissen, wer schuld ist, wenn eine Datei fehlt: P. Ich bin gerade dabei, eine solche Situation zu diagnostizieren: /
Vijay


2

Wenn Sie eine integrierte Lösung mit JScript oder VBScript erstellen möchten, müssen Sie nach einer Dateisystemüberwachung mit WMI-Ereignissubskriptionen suchen. Grundsätzlich schreiben Sie den Code, um Ordner- und Preform-Aktionen zu überwachen, wenn eine Änderung festgestellt wird, z. B .:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... und Ihr Skript wird in einem Intervall ausgeführt, in dem darauf geachtet wird, dass diese Ereignisse auftreten. Es gibt viele Ressourcen, aber hier sind einige für VBScript und Powershell:


1

NirSoft verfügt über eine Software zum Überwachen von Änderungen an Dateien in Windows
FolderChangesView

FolderChangesView ist ein einfaches Tool, das den ausgewählten Ordner oder das ausgewählte Laufwerk überwacht und alle Dateinamen auflistet, die während der Überwachung des Ordners geändert, erstellt oder gelöscht werden. Sie können FolderChangesView mit jedem lokalen Laufwerk oder mit einer Remote-Netzwerkfreigabe verwenden, sofern Sie Leseberechtigung für den ausgewählten Ordner haben.

Bildbeschreibung hier eingeben

Sie können es hier kostenlos herunterladen.
Weitere Informationen


Scheint eher ein Informations- / Debugging-Tool als ein Automatisierungs-Tool zu sein, ist aber immer noch interessant.
Camilo Martin

0

Sie können http://jnotify.sourceforge.net/ verwenden , um OS-spezifische Dateisystemüberwachungsereignisse zu abonnieren. Der Code ist Jahre alt, funktioniert aber immer noch (zumindest auf dem Windows Server 2013r2, den ich gestern getestet habe).

Auf https://github.com/redbooth/jnotify gibt es auch Github Resurrection von jnotify, das keine eigenständige Demo-App anbietet, aber (laut Commit-Protokollen) einige Fehler behebt .

In Java7 sollte es auch eine Art inotify-ähnliche Dateisystemüberwachung geben, aber ich habe sie noch nicht getestet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.