Yêu thích của tôi là sử dụng lớp .Net [IO.DirectoryInfo], công cụ này sẽ xử lý một số logic. Tôi thực sự sử dụng điều này cho rất nhiều thách thức kịch bản tương tự. Nó có một phương thức .Create() để tạo các thư mục không tồn tại, không có lỗi nếu chúng thực hiện.
Vì đây vẫn là một vấn đề hai bước, tôi sử dụng bí danh foreach để giữ cho nó đơn giản. Đối với các tệp đơn lẻ:
[IO.DirectoryInfo]$to |% {$_.create(); cp $from $_}
Theo như kết hợp đa tệp/thư mục của bạn, tôi sẽ sử dụng RoboCopy trên xcopy. Tháo "*" từ từ và chỉ sử dụng:
RoboCopy.exe $from $to *
Bạn vẫn có thể thêm/r (Đệ quy),/e (Đệ quy bao gồm Trống), và có 50 công tắc hữu ích khác.
Chỉnh sửa: Nhìn lại điều này thật khó hiểu nhưng không thể đọc được nếu bạn không sử dụng mã thường xuyên.Thông thường tôi có nó chia thành hai, như vậy:
([IO.DirectoryInfo]$to).Create()
cp $from $to
Ngoài ra, DirectoryInfo là loại tài sản Chánh của FileInfo, vì vậy nếu bạn $ để là một tập tin, bạn có thể sử dụng chúng với nhau:
([IO.FileInfo]$to).Parent.Create()
cp $from $to
Nguồn
2016-09-09 14:27:02
PowerShell là dễ dàng như vậy khi ai biết nó :) – stej
đó làm việc cho toàn bộ thư mục, nhưng những gì nếu tôi chỉ cần sao chép những file riêng biệt (vì vậy tôi có thể có một st vào chúng tôi)? Làm thế nào để bạn sao chép c: \ test1 \ file.txt vào c: \ test2 \ file.txt khi c: \ test2 không tồn tại? Đó là những gì tôi thực sự cần biết làm thế nào để làm. Cảm ơn, Gary –
Tôi đã gặp phải sự cố tương tự này và đã giải quyết vấn đề bằng cách gọi cho Mục mới đầu tiên: 'Mục mới -Force $ tới ' ' Sao chép mục -Force $ từ $ đến ' – rjschnorenberg