Теоретически, использование /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
).
rsync
, но что если у вас нет косой черты в конце вашей целевой папки? Как насчет попытки изменить скрипт на уровне командной строки вместо использования графического интерфейса? Я точно знаю, что инструмент командной строки будет делать то, что вам нужно.