Tôi muốn có thể viết tập lệnh PowerShell để lấy thư mục (hoặc tập hợp thư mục) và sao chép chúng trong cấu trúc thư mục (không có tệp) có thể được tạo, nơi mà cấu trúc tệp (không có thư mục) có thể được tạo hoặc trong đó cả tệp (tất cả hoặc tệp được chọn) VÀ thư mục có thể được tạo.Sao chép các thư mục không có tệp, tệp không có thư mục hoặc mọi thứ bằng PowerShell
Example:
C:\ProdData has 3 subfolders in it
C:\ProdData\Fld1
C:\ProdData\Fld2
C:\ProdData\Fld3 - has 2 subfolders under it
C:\ProdData\Fld3\MyFolder1
C:\ProdData\Fld3\MyFolder2
Mỗi thư mục ở trên có một số lượng tệp khác nhau có kích thước khác nhau trong đó.
Tôi muốn có một kịch bản PowerShell đó sẽ lặp lại rằng cấu trúc thư mục nơi khác, đem lại cho tôi một sự lựa chọn của thư mục Cấu trúc Chỉ, tập tin Chỉ, hoặc Files and Folders để được sao chép.
Ở phía trên, tôi muốn để có thể copy C: \ ProdData đến một thư mục khác, về cơ bản đổi tên ProdData để TestData (nghĩa là, C: \ ProdData sao chép vào C: \ TestData), hoặc sao chép toàn bộ cấu trúc thư mục.
C:\ProdData
vào một thư mục khác đó là một thư mục con của cái gì khác: C:\TestArea\TestFolders\2012-04-01\TestData\ProdData\Fld1
, vv ...
Và có chọn lọc chọn để bao gồm các thư mục, tập tin hoặc cả.
Giải pháp lý tưởng sẽ là (chỉ dành cho thư mục) lấy cấu trúc thư mục, xuất/lưu, đọc và tạo cấu trúc tương tự ở nơi khác. Một số giải pháp tôi đã tìm thấy cho biết họ đã sao chép cấu trúc thư mục chỉ, nhưng nếu dữ liệu tồn tại, cũng sẽ được sao chép và bạn không thể loại trừ một hoặc một cấu trúc khác. Tôi có một giải pháp phần để yêu cầu file-duy nhất mà bán bảo toàn con đường, nhưng nó sẽ mất một tập tin:
c:\ProdData\Fld1\MyFile.dat
và sao chép nó vào:
c:\TestData\yyyyMMdd_hhmmss_ProdData_Fld1_MyFile.dat
Nhưng đó không phải là một cái gì đó mà có thể dễ dàng được giải mã và sẽ không thể tích hợp lại cấu trúc nguồn. Tôi đánh giá cao bất kỳ suy nghĩ về làm thế nào để thực hiện điều này mà không tái phát minh ra bánh xe.
Cảm ơn đã gợi ý. Tôi đã không có Robocopy thậm chí cài đặt, và nó phù hợp với nhu cầu khá tốt. Điều tôi đã làm cho cấu trúc của một tệp là đặt Show-Tree thành một tệp văn bản. Điều đó hoàn thành một phần của những gì tôi đã sau. Không ai có thể làm tất cả, nhưng 3 phần tương đối đơn giản cùng nhau hoàn thành những gì tôi cần. Cảm ơn sự giúp đỡ của bạn! –
Để làm phẳng, bạn có thể bỏ qua phần giữa và chỉ sử dụng tùy chọn -File trên Get-ChildItem như (và Copy-Item thay vì robocopy): Get-ChildItem $ source -Recurse -File | Foreach-Object {Copy-Item $ _. FullName $ dest}. Không phải là một sự khác biệt rất lớn mặc dù. – Brandon
@Brandon Điểm tốt. Miễn là bạn đang ở trên Powershell 3 bạn chắc chắn có thể làm điều đó (các tham số '-File' và' -Directory' không tồn tại cho đến v3). – ajk