Robocopy kopiert nicht den Stammordner und seinen Zeitstempel - es kopiert alle Unterverzeichnisse und Dateien (wenn die entsprechenden Optionen festgelegt sind) und es scheint keine Option / kein Argument zu geben, um Robocopy mitzuteilen, dass Sie den Stammordner selbst und seinen Zeitstempel oder seine Attribute möchten auch wörtlich kopiert werden.
Sagen Sie also, ich möchte C: / Brushes kopieren
Robocopy kopiert alle Unterverzeichnisse und Dateien in das Ziel, jedoch nicht in den Pinselordner selbst mit allen zugehörigen Attributen und dem Zeitstempel.
Verstehst du was ich frage? Dies ist ziemlich einfach und Robocopy scheint keine Option dafür zu haben. Die Leute haben die Frage schon einmal in verschiedenen Foren gestellt, aber meiner Meinung nach hat niemand die Frage beantwortet.
rsync
, aber was ist, wenn Sie am Ende Ihres Zielordners keinen abschließenden Schrägstrich haben? Wie wäre es mit dem Versuch, das Skript auf Befehlszeilenebene zu ändern, anstatt die GUI zu verwenden? Ich weiß, dass das Befehlszeilentool genau das tut, was Sie brauchen.Antworten:
Legen Sie einen Ordner auf
bat
oder verwenden Sie in Senden an . Es wird ein Ordner mit Name und Zeitstempel des Quellverzeichnisses erstellt und alle Dateien kopiert.quelle
%~n1
?Ich stimme dem OP zu, dass es ein großes Manko der Robokopie ist, den Stammordner nicht kopieren zu können. Wie wäre es, wenn Sie den Pinselordner betrügen und in einen temporären Ordner verschieben, den Robocopy-Vorgang für den temporären Ordner ausführen und ihn dann zurück verschieben?
Etwas wie:
quelle
Versuchen Sie es
md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
über die Befehlszeile und ersetzen Sie die richtigen Pfade.quelle
Da ich in keiner der Antworten eine gute und einfache Lösung sehen kann:
Wenn es keine Lösung für Robocopy gibt , können Sie sich xxcopy ansehen (es gibt Freeware- und kommerzielle Versionen).
Es gibt natürlich viele andere Alternativen zur Robokopie, einige sind hier aufgelistet .
Siehe auch Bestes Dienstprogramm zum kostenlosen Kopieren von Dateien .
quelle
xxcopy
ist ein großartiges Dienstprogramm, aber die Freeware-Version verfügt über eine Eingabeaufforderung, auf die Sie reagieren müssen, wenn Sie eine große Liste von Befehlszeilenoptionen verwenden. Bei Verwendungxxcopy
über ein Befehlsfenster ist diese zusätzliche Eingabeaufforderung irritierend. Aber es verhindert (erschwert) die Verwendungxxcopy
einer Batch-Datei überhaupt.Die Antwort von user105198 ist auf halbem Weg,
D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
wird in der Tat nur einen neuen Ordner erstellen. Sie brauchen append / MIR und / Dcopy: T , um esZusammen bedeutet dies: Die Attribute und Zeitstempel des Quellverzeichnisses werden in den erstellten Ordner gespiegelt.
damit:
quelle
Ich denke, Sie werden feststellen, dass Robocopy genau das tut, was Sie wollen, vorausgesetzt, Sie weisen es an, Ordner-Zeitstempel (/ DCOPY: T) zu kopieren. Bei meinen Experimenten habe ich festgestellt, dass das folgende (scheinbar nicht dokumentierte) Verhalten für Robocopy zutrifft:
Die angegebenen Eigenschaften können (mindestens) die Sicherheitsinformationen (/ SEC) oder Ordnerzeitstempel (/ DCOPY: T) enthalten.
Daher werden im folgenden Beispiel dem Ordner c: \ destination \ dieselben Zeitstempel zugewiesen wie dem Ordner c: \ source \.
Ich habe dies mit den Versionen von Robocopy getestet, die in Windows 7, Windows 8 und dem Windows 2003 Resource Kit enthalten sind (nur Parameter / SEC). Beachten Sie, dass nur neuere Versionen von Robocopy (XP026 und höher) den Parameter / DCOPY: T unterstützen.
quelle
Wenn Sie kombinieren
/IF :: Include the following Files.
mit/E :: copy subdirectories, including Empty ones.
Ihnen bekommen ( in der Nähe) , um den gewünschten Effekt:quelle
Robocopy ist nicht wirklich dafür ausgelegt. Es gibt jedoch einen Weg.
Der Stammordner enthält beispielsweise 50 Dateien und 40 Ordner. Sie möchten nur Ordner X (aber Sie möchten auch den Zeit- und Datumsstempel).
Das / DCOPY: T weist es an, die Ordnerzeitstempel beizubehalten. / XF gibt an, welche Dateien NICHT kopiert werden sollen, / XD gibt an, welche Ordner NICHT kopiert werden sollen. Geben Sie einfach nicht den Ordner c: \ X an.
Der Hauptnachteil dabei ist, alle Ordner und Dateinamen im Stammverzeichnis zu untersuchen und sie hier speziell aufzurufen. Wenn Sie dies häufig auf verschiedenen Systemen tun, kann ein Skript geschrieben werden.
Arbeitsbeispiel
Robokopie c: \ Test c: \ abc / XF c: \ Test \ Testing.txt / XD "C: \ Test \ Neuer Ordner (2)" "C: \ Test \ Neuer Ordner (3)" / S / E / SEC / DCOPY: T.
Root-Arbeitsbeispiel
Robokopie c: \ d: \ / XF c: \ Testing.txt / XD "C: \ Neuer Ordner (2)" "C: \ Neuer Ordner (3)" / S / E / SEC / DCOPY: T.
Mein Test hat funktioniert, ich habe ein paar Ordner und Unterordner erstellt, c: \ testing war in diesem Fall root, c: \ abc war root eines anderen Laufwerks (offensichtlich sind sie nicht wirklich, aber für diesen Zweck sollte es Sinn machen). Der Ordner, den ich vom Stammverzeichnis haben wollte, hieß "Neuer Ordner", wie Sie sehen, habe ich ihn in / XD nicht angegeben. Stellen Sie außerdem sicher, dass Sie das c: \ angeben. Andernfalls sind die von Ihnen verwendeten Namen global. Mit anderen Worten, wenn ich c: \ testing in aus der Datei Testing.txt nicht angegeben hätte, würde es in ALLEN zu kopierenden Unterordnern weggelassen. Die / SEC kopiert alle Dateisicherheits- und Zeitstempel.
quelle
Theoretisch sollte die Verwendung
/DCOPY:T
alle Ihre Probleme lösen.Aber ich habe gesehen, dass dies passiert ist, und ich bin nicht sicher, ob ich es einen "Fehler" nennen würde, sondern eher eine Folge der Abfolge der Operationen (OK, Fehler).
Dieser Befehl sollte funktionieren, um alle Dateien von
C:\Brushes
nach zu kopierenD:\NEWBrushes
, und/DCOPY:T
sollte bewirken, dass die Zeitstempel des Quellordners in den Zielordner kopiert werden:Was ich gesehen habe (zumindest bei einigen Versionen von Robocopy), ist, dass der Befehl erfolgreich ist, aber der Zeitstempel des
D:\NEWBrushes
Ordners auf das aktuelle Datum und die aktuelle Uhrzeit gesetzt ist.Es scheint also, dass die
/DCOPY:T
Funktion für den "obersten" (obersten) Ordner, den Sie kopieren, nicht funktioniert.Ich glaube, dass es funktioniert, aber dass der Zeitstempel des Zielordners von Operationen "betreten" wird, die sich später in der Operationssequenz befinden.
Was ich glaube, passiert für diesen Befehl:
ist so etwas wie:
D:\NEWBrushes
falls noch nicht vorhandenC:\Brushes
nachD:\NEWBrushes
C:\Brushes
nachD:\NEWBrushes
Es scheint, dass in Schritt 3 durch die Änderung des Inhalts des Ordners
D:\NEWBrushes
der Zeitstempel vonD:\NEWBrushes
geändert wird.Für mich bestand die "Problemumgehung" darin, den
robocopy
Befehl zum Kopieren der Dateien und Ordner auszuführen und dann den (gleichen)robocopy
Befehl ein zweites Mal auszuführen .Also, das erste Mal, wenn Sie laufen:
Alle Dateien und Ordner werden kopiert. Dann nochmal laufen lassen:
Beim zweiten
robocopy
Ausführen werden keine Dateien oder OrdnerD:\NEWBrushes
darin geändert, und die/DCOPY:T
Option weistrobocopy
an, den Zeitstempel vonC:\Brushes
nach zu kopierenD:\NEWBrushes
(es sei denn, es gibt Ordner / DateienC:\Brushes
, die sich seit dem ersten Durchlauf von geändert habenrobocopy
).quelle
Ich habe gerade die Stammordner für ein wirklich schnelles und einfaches Backup-Skript mit Robocopy gelöst. Es gibt ein Beispiel. Sollte jedem helfen:
quelle