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