Automatisieren Sie Windows Robocopy mit der Option Internal Changes Monitor / MON: 1

7

Die Option / MON: 1 funktioniert einfach hervorragend und führt einen Verzeichnisscan durch, wenn nur Änderungen vorgenommen wurden. Dies ist nicht möglich, wenn Robocpy alle 10 Minuten über den Windows-Scheduler ausgeführt wird.

Gibt es eine Möglichkeit, die auszuführen

robocopy  \\192.168.1.100\D$\RoboCopyTest \\192.168.1.200\D$\RoboCopyTest /FFT /Z /ETA /E /XA:H /R:0 /W:1 /XO /NP /NDL /NFL /MON:1

Befehl automatisch, wenn Windows gestartet wird und wenn der Befehl aus irgendeinem Grund gestoppt wurde - starten Sie ihn neu und benachrichtigen Sie das Windows-Ereignisprotokoll, dass der Befehl aus irgendeinem Grund gestoppt wurde. Der Befehl robocpy mit der Option / MON: n verfügt über eine Endlosschleife, die nur ausgeführt wird, wenn die Dateien N geändert haben.

user34402
quelle
1
Ich erhalte diesen Fehler, egal wie ich ihn optimiere: ***> Der Robocopy Svc-Dienst konnte aufgrund des folgenden Fehlers nicht gestartet werden:> Der Dienst hat nicht rechtzeitig auf die Start- oder Steuerungsanforderung reagiert. *** Hilfe?

Antworten:

6

Möglicherweise ist es besser, einen Windows-Dienst dafür zu erstellen, als ihn über den Taskplaner auszuführen. Das Service-Framework basiert auf dieser Art von Programm, das einmal gestartet und für immer gestartet wird, und verfügt über Hooks für das Eventing bei unbekanntem Stopp.

Das Erstellen eines benutzerdefinierten Dienstes ist ziemlich einfach. Obwohl der Artikel für Windows 2000 entwickelt wurde , funktioniert er immer noch für 2008. Der Befehl 'sc' wird zum Erstellen des Dienstes verwendet.

sc create "Robocopy-Service" binPath= "c:\tools\robocopy.exe" start= auto

Ändern Sie die Werte basierend darauf, wie der Dienst ausgeführt werden soll. Sobald es dort ist, können Sie in den Service Manager gehen und den Service so ändern, dass er mit plötzlichem Anhalten umgeht. Es zeichnet immer ein Ereignis auf ("Dienst xyz wurde unerwartet gestoppt"), aber Sie können ihm mitteilen, wie der Dienst neu gestartet werden soll, oder ein Skript ausführen, wenn Sie E-Mails darüber senden müssen.

sysadmin1138
quelle
1
Aber wie übergeben Sie die Parameter an Robocopy?
Simon
Ich habe auch Probleme beim Übergeben von Parametern.
Klee
9

So erweitern Sie die obigen Antworten und geben Parameter für die Robokopie an:

sc create "Robocopy Service" binpath="c:\windows\system32\robocopy.exe /JOB:robocopy"

Dadurch wird die Datei robocopy.rcj gelesen, die alle Parameter enthält.

Sie können den Befehl robocopy mit allen gewünschten Parametern ausführen und den Befehl / SAVE: robocopy hinzufügen, um die Datei robocopy.rcj zu erstellen. Sie können die Parameter dann ändern, indem Sie einfach die Datei robocopy.rcj bearbeiten.

Jorge Henriquez
quelle
Wo wird die Datei robocopy.rcj erstellt? Wie kann ich den Pfad angeben?
Victorio Berra