Về lý thuyết, sử dụng /DCOPY:T
nên giải quyết tất cả các vấn đề của bạn.
Nhưng, tôi đã thấy điều này xảy ra, và tôi không chắc là tôi gọi nó là "lỗi", mà là hậu quả của chuỗi hoạt động (OK, bug).
Lệnh này sẽ hoạt động để sao chép tất cả các tệp từ C:\Brushes
đến D:\NEWBrushes
và /DCOPY:T
sẽ khiến các dấu thời gian của thư mục nguồn được sao chép vào thư mục đích:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
Những gì tôi đã thấy (ít nhất là trên một số phiên bản Robocopy) là lệnh thành công, nhưng dấu thời gian của D:\NEWBrushes
thư mục được đặt thành ngày và giờ hiện tại.
Vì vậy, có vẻ như /DCOPY:T
tính năng này không hoạt động đối với thư mục "cơ sở" (trên cùng) mà bạn đang sao chép.
Tôi tin rằng nó đang hoạt động, nhưng dấu thời gian của thư mục đích đang bị "dẫm đạp" bởi các hoạt động nằm sau chuỗi hoạt động.
Những gì tôi tin là đang xảy ra cho lệnh này:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
là một cái gì đó như thế này:
- Tạo thư mục
D:\NEWBrushes
nếu nó không tồn tại
- Sao chép dấu thời gian từ
C:\Brushes
đếnD:\NEWBrushes
- Sao chép tập tin và thư mục phụ từ
C:\Brushes
đểD:\NEWBrushes
Có vẻ như Bước 3, việc sửa đổi nội dung của thư mục D:\NEWBrushes
khiến dấu thời gian D:\NEWBrushes
thay đổi.
Đối với tôi, "cách giải quyết" là chạy robocopy
lệnh sao chép các tệp và thư mục, sau đó chạy lệnh (tương tự) robocopy
lần thứ hai.
Vì vậy, lần đầu tiên bạn chạy:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
tất cả các tập tin và thư mục sẽ được sao chép. Sau đó chạy lại:
robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
(or)
robocopy "C:\Brushes" "D:\NEWBrushes" /DCOPY:T
Lần thứ hai robocopy
chạy, không có các tập tin hoặc thư mục bên trong D:\NEWBrushes
sẽ được sửa đổi, và các /DCOPY:T
tùy chọn sẽ cho robocopy
để sao chép các dấu thời gian từ C:\Brushes
đến D:\NEWBrushes
(trừ khi có các thư mục / tập tin trong C:\Brushes
đó đã thay đổi kể từ khi chạy đầu tiên của robocopy
).
rsync
, nhưng nếu bạn không có dấu gạch chéo ở cuối thư mục đích thì sao? Còn về việc cố gắng sửa đổi tập lệnh ở cấp dòng lệnh thay vì sử dụng GUI thì sao? Tôi biết một thực tế rằng công cụ dòng lệnh sẽ làm những gì bạn cần.