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 kopieren D:\NEWBrushes
, und /DCOPY:T
sollte bewirken, dass die Zeitstempel des Quellordners in den Zielordner kopiert werden:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
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:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
ist so etwas wie:
- Ordner erstellen,
D:\NEWBrushes
falls noch nicht vorhanden
- Kopieren Sie den Zeitstempel von
C:\Brushes
nachD:\NEWBrushes
- Kopieren Sie Dateien und Unterordner von
C:\Brushes
nachD:\NEWBrushes
Es scheint, dass in Schritt 3 durch die Änderung des Inhalts des Ordners D:\NEWBrushes
der Zeitstempel von D:\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:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
Alle Dateien und Ordner werden kopiert. Dann nochmal laufen lassen:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
(or)
robocopy "C:\Brushes" "D:\NEWBrushes" /DCOPY:T
Beim zweiten robocopy
Ausführen werden keine Dateien oder Ordner D:\NEWBrushes
darin geändert, und die /DCOPY:T
Option weist robocopy
an, den Zeitstempel von C:\Brushes
nach zu kopieren D:\NEWBrushes
(es sei denn, es gibt Ordner / Dateien C:\Brushes
, die sich seit dem ersten Durchlauf von geändert haben robocopy
).
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.