Theoretisch sollte die Verwendung /DCOPY:Talle 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:\Brushesnach zu kopieren D:\NEWBrushes, und /DCOPY:Tsollte 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:\NEWBrushesOrdners auf das aktuelle Datum und die aktuelle Uhrzeit gesetzt ist.
Es scheint also, dass die /DCOPY:TFunktion 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:\NEWBrushesfalls noch nicht vorhanden
- Kopieren Sie den Zeitstempel von
C:\BrushesnachD:\NEWBrushes
- Kopieren Sie Dateien und Unterordner von
C:\BrushesnachD:\NEWBrushes
Es scheint, dass in Schritt 3 durch die Änderung des Inhalts des Ordners D:\NEWBrushesder Zeitstempel von D:\NEWBrushesgeändert wird.
Für mich bestand die "Problemumgehung" darin, den robocopyBefehl zum Kopieren der Dateien und Ordner auszuführen und dann den (gleichen) robocopyBefehl 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 robocopyAusführen werden keine Dateien oder Ordner D:\NEWBrushesdarin geändert, und die /DCOPY:TOption weist robocopyan, den Zeitstempel von C:\Brushesnach 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.