Tôi cần sao chép tất cả các tệp *.doc
(nhưng không phải thư mục có tên phù hợp với *.doc
) từ thư mục mạng \\server\source
(bao gồm tệp trong tất cả thư mục lồng nhau) vào thư mục cục bộ C:\destination
mà không cần lưu trữ phân cấp thư mục lồng nhau. C:\destination
và không có thư mục lồng nhau nào được tạo trong C:\destination
). Trong trường hợp có nhiều tệp có cùng tên từ các thư mục con khác nhau của \\server\source
, chỉ có một tệp đầu tiên sẽ được sao chép và không bao giờ ghi đè sau đó - tất cả các tệp xung đột được tìm thấy sau này sẽ bị bỏ qua (có thể có nhiều trường hợp như thế này và các tệp bị bỏ qua nên không được trasferred qua mạng, nếu không nó sẽ mất quá nhiều thời gian). Đây là nỗ lực của tôi để thực hiện nó trong PowerShell:Làm cách nào để sao chép các tệp nhất định (cấu trúc phân cấp thư mục), nhưng không ghi đè lên các tệp hiện có?
cp \\server\source\* -Recurse -Include *.doc -Container:$false -Destination C:\destination
Có ít nhất hai vấn đề với lệnh này:
- Nó sao chép thư mục có tên phù hợp
*.doc
quá. - Trong trường hợp các tên xung đột, bất kỳ tệp nào được tìm thấy sau này được chuyển qua mạng và ghi đè tệp trước đó.
Bạn có thể đề xuất cách khắc phục những sự cố này không?
Triển khai sử dụng copy
, xcopy
, robocopy
, cscript
hoặc *.bat
, *.cmd
cũng được hoan nghênh.
Hệ điều hành cục bộ là Windows 8 và hệ thống tệp là NTFS.
Hành vi mong đợi nếu tập lệnh chạy hai lần là gì? Nó vẫn nên sao chép tất cả mọi thứ một lần? Hay nó không sao chép gì? –
@splatteredbits Thư mục đích có thể được giả định ban đầu trống. Nếu điều kiện tiên quyết này thất bại thì hành vi kịch bản có thể không xác định. –