Теоретически, использование /DCOPY:T должно решить все ваши проблемы.
Но я видел, как это произошло, и я не уверен, что назвал бы это "ошибкой", а скорее следствием последовательности операций (ОК, ошибка).
Эта команда должна работать для копирования всех файлов из C:\Brushes в D:\NEWBrushes , и /DCOPY:T должен вызывать копирование временных меток исходной папки в целевую папку:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
Что я видел (по крайней мере, в некоторых версиях Robocopy), так это то, что команда выполнена успешно, но метка времени папки D:\NEWBrushes установлена на текущую дату и время.
Таким образом, похоже, что /DCOPY:T не работает для "базовой" (самой верхней) папки, которую вы копируете.
Я полагаю, что это работает, но что временная метка папки назначения "наступает" операциями, которые позже в последовательности операций.
То, что я считаю, происходит с этой командой:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
это что-то вроде этого:
- Создать папку
D:\NEWBrushes если она еще не существует
- Скопируйте метку времени из
C:\Brushes в D:\NEWBrushes
- Скопируйте файлы и подпапки из
C:\Brushes в D:\NEWBrushes
Похоже, что на шаге 3 изменение содержимого папки D:\NEWBrushes вызывает изменение временной метки D:\NEWBrushes .
Для меня "обходной путь" заключался в том, чтобы запустить команду robocopy для копирования файлов и папок, а затем запустить (ту же) команду robocopy во второй раз.
Итак, при первом запуске:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
все файлы и папки будут скопированы. Затем запустите его снова:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
(or)
robocopy "C:\Brushes" "D:\NEWBrushes" /DCOPY:T
Во второй раз, когда запускается robocopy , никакие файлы или папки в D:\NEWBrushes не будут изменены, а параметр /DCOPY:T скажет robocopy скопировать метку времени из C:\Brushes в D:\NEWBrushes (если только нет папок / файлов). в C:\Brushes , которые изменились с первого запуска robocopy).