Ich muss auf meinem Vista-Computer eine Art Skript einrichten, damit beim Hinzufügen einer Datei zu einem bestimmten Ordner automatisch ein Hintergrundprozess ausgelöst wird, der auf die Datei angewendet wird. (Der Hintergrundprozess ist nur ein Befehlszeilenprogramm, das den Dateinamen zusammen mit einigen anderen vordefinierten Optionen als Argument verwendet.)
Ich möchte dies aus Leistungs- und Wartungsgründen mit systemeigenen Windows-Funktionen tun, sofern dies möglich ist. Ich habe mich mit der Verwendung von Task Scheduler befasst, aber nachdem ich das Triggersystem eine Weile durchgesehen habe, konnte ich nicht viel daraus lernen und bin mir nicht einmal sicher, ob es in der Lage ist, das zu tun, was ich brauche.
Ich würde mich über Vorschläge freuen. Vielen Dank!
quelle
Antworten:
Bei der Arbeit verwenden wir Powershell, um Ordner zu überwachen.
Es kann seit Windows Vista (.NET und PowerShell sind vorinstalliert) ohne zusätzliche Tools verwendet werden.
Dieses Skript überwacht einen bestimmten Ordner und schreibt eine Protokolldatei. Sie können die Aktion ersetzen und tun, was Sie möchten, z. B. ein externes Tool aufrufen
Beispielprotokolldatei
StartMonitoring.ps1
Wie benutzt man
$watcher.Path = "D:\source"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
StartMonitoring.ps1
Um die Überwachung zu beenden, muss lediglich das PowerShell-Fenster geschlossen werden
Weitere Lektüre
quelle
StartWatching.ps1
Fenster zu schließen, um die Überwachung zu stoppen. Das zweite Skript funktioniert nur , wenn Sie es in Ihrem ersten Skript enthalten die Variablen zu speichern$created
,$changed
,$deleted
oder$renamed
Sie scheinen auf dem richtigen Weg zu sein - Sie könnten den Taskplaner verwenden, um regelmäßig eine .bat- oder .cmd-Datei auszuführen, und diese Datei könnte mit einer Zeile beginnen, um zu überprüfen, ob die erforderliche Datei vorhanden ist würde überprüfen, ob die Datei nicht existiert; zum Beispiel:
Sie können diesen Code auch ändern und ihn in einer Schleife mit einer Verzögerung von beispielsweise 1 Minute ausführen lassen und dann einen Verweis auf die Batchdatei in den Windows-Startordner einfügen:
Es gibt andere Möglichkeiten, eine Verzögerung zu erzielen, die von der ausgeführten Windows-Version und den installierten zusätzlichen Resource Kits abhängt. Der Befehl PING funktioniert jedoch unter allen Umständen. Im obigen PING-Befehl werden 10 Phantom-PINGS mit einer Verzögerung von 6000 ms (dh 6 Sekunden) zwischen ihnen ausgeführt. Sie können mit diesen Werten spielen, um die Verzögerung zu erreichen, die Sie zwischen Batch-Dateischleifen benötigen.
quelle
-n 10
vs zurückzuführen-n 1
.IF NOT EXIST C:\NO_SUCH_FILE_EVER.foo
. Hackish, aber es funktioniert. Danke für die Idee.Vielen Dank für die Vorschläge.
Am Ende habe ich ein VBScript geschrieben, das in etwa auf der Idee von Linker3000 basierte, den Ordner abzufragen und mit dem Taskplaner beim Start auszuführen. Ich erhielt die grundlegende Syntax aus dieser Ressource und nahm die erforderlichen Optimierungen vor.
Ich würde es gerne noch irgendwann optimieren, wenn die Eingeweide des Skripts auf einem ereignisgesteuerten System laufen würden, aber mir fehlt die Zeit, um daran zu arbeiten, und das ist gut genug.
Hier ist das Skript, falls sich jemand dafür interessiert (wobei das irrelevante Konvertierungssegment aus Gründen der Übersichtlichkeit überarbeitet wurde):
(Außerdem möchte ich diese Frage nicht offiziell unbeantwortet lassen - und ich hasse es, meine eigene Antwort auf die Frage zu akzeptieren -, aber ich habe die Antwort von Linker3000 zum Dank positiv bewertet!)
quelle
Sie könnten sich DropIt (kostenlos) ansehen . Das Programm eignet sich zum automatisierten Verarbeiten eingehender Dateien. Sie können Parameter verschieben, kopieren, löschen und an andere Befehlszeilenprogramme übergeben, um Bilder zu konvertieren, PDFs zu teilen usw.
quelle
Wenn nur geänderte Dateien kopiert werden sollen, können Sie robocopy / MON verwenden
Ich weiß nicht, ob robocopy FileSystemWatcher verwendet oder nach Änderungen fragt
quelle
Oder Sie könnten Watch 4 Folder verwenden . Anscheinend ist es Freeware, portabel und kompatibel mit Windows 7. Ich habe es noch nicht ausprobiert, es aber über eine Websuche gefunden und dachte, ich würde es weitergeben.
Ich mag auch das VBS-Skript, das auch auf der Website vorgestellt wird.
quelle
Auch gefunden Wächter , die ziemlich groß, und ein kleiner zu sein scheint watchexec ich versucht habe , nicht.
quelle
Wir verwenden das kommerzielle Tool (dh nicht kostenlos) Folder Poll von http://www.myassays.com/folder-poll , um genau dies zu tun. Es ist eine Windows-Anwendung, die eine benutzerfreundliche Manager-Anwendung enthält, um eine einfache Konfiguration zu ermöglichen. Es gibt auch eine XML-Konfigurationsoption. Die eigentliche Ordnerabfrage wird als Windows-Dienst ausgeführt (wird also bei jedem Neustart automatisch gestartet). Wenn eine neue Datei in einem abgefragten Ordner gefunden wird, kann eine Anwendung automatisch gestartet werden (Sie können Ihre eigenen benutzerdefinierten Befehlszeilenargumente angeben). Es kann auch andere Dinge wie das Kopieren / Verschieben von Dateien erledigen. Die Aktivität kann auch in einer Protokolldatei protokolliert werden, und es gibt andere erweiterte Vorgänge.
quelle