Speichern log von robocopy-Befehl, um eine datierte Protokoll-Datei
Ich bin den folgenden Befehl ausführen, um backup-Ordner auf einem remote-share gemappt als Laufwerk:
REM Backup local documents to Q drive, only add new files does not remove old
REM files
echo --------------------------------------------------------------------------
echo Running backup to Q batch, only adding new files
echo --------------------------------------------------------------------------
robocopy C:\WhatIWantToCopy^
Q:\ /256 /V /S /IPG:125^
/XF *.log /tee /ETA /XC /XN /XO^
/XD C:\SomeRubbish^
/log:C:\MyStuff\logs\robo_%_DATETIME.log
Der Befehl ausgeführt wird, aber die Zeile:
/log:C:\MyStuff\logs\robo_%_DATETIME.log
nicht angezeigt werden, erzeugen die erforderliche log-Datei. Ich möchte für die log-Datei der Struktur robo_16-12-2015.melden Sie, die den aktuellen Datum.
- Variablen werden mit einem Prozent-Zeichen an der front UND am Ende:
%_datetime%
(vorausgesetzt, es definiert)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie brauchen, um zu konstruieren, das Datum in dem format, das Sie möchten. Diese Seite sollte helfen:
Auf meinem Rechner, dieser Ausgänge:
Wenn Sie wollen, um eine Stunde-Minute-timestamp, nur entsprechend aktualisieren Parsen der
%TIME%
variable:%TIME%
gebaut sind, in Variablen. Ich bin analysieren Sie mit Hilfe derSET
substring syntax, die Sie hier sehen können:SET /?
Löste ich dieses problem wie folgt: mein server gibt diese:
Nun, ich will eine log-Datei mit Robocopy, die ein "Jahr-Monat-Tag-Stunde-Minute-Sekunde" - Teil in der Datei name. Die Herausforderung hier ist, um loszuwerden, das /und : - Zeichen, denn diese sind nicht in Dateinamen zulässig.
Die Lösung: erstellen Sie eine batch-Datei, z.B. setdtvar.cmd, mit diesem an:
Auf meinem server, die DTVAR variable gibt jetzt das Datum und die Uhrzeit in das format, das ich brauche, zum Beispiel:
Zur Aktivierung dieser Funktion für Robocopy: Jede batch-Datei mit robocopy-Befehle ruft zuerst die setdtvar.cmd-Datei (nennen setdtvar.cmd in der ersten Zeile). Dies setzt die DTVAR variable im Kontext des Prozesses, läuft die batch-Datei. Dann, in der Robocopy-log-Datei-Befehl, den ich verwenden %DTVAR% in den Dateinamen der log-Datei.
Antwort auf die ursprüngliche Frage kann man den folgenden code verwenden. Dieser code wird auch Unterstützung von alten Systemen, die einen Tag aufgelistet in der
DATE
variable.Nur ein einfacher Ansatz, die haben mir gute Dienste geleistet über die Jahre und vermeidet Kollisionen mit Namen, die. Unten ist eine snip-it, dass ich in meiner Skript-Datei, die ich als ein robocopy-Skript zur migration. Ich benutze diese generieren neue log-Datei-Namen jedes mal, wenn es lief. Der name dieser speziellen Skript, das ich habe, heißt "Migration.Fledermaus". Wie Sie sehen können Sie diesen code verwenden den Namen des Skripts und dann spucken Sie einen schönen Namen für die Protokolldatei zu verwenden.
Dann sehen, wie es aussieht...
Etwas zurückgeben sollte wie...