2012-02-07 10 views
5

Tôi đang tìm cách sao chép tệp từ cấu trúc thư mục sang thư mục mới. Tôi không tìm cách bảo vệ cấu trúc tập tin, chỉ cần lấy các tập tin. Cấu trúc tập tin là như vậy mà có thể có các thư mục lồng nhau, nhưng bất cứ điều gì trong một thư mục có tên 'cũ' tôi không muốn di chuyển qua.Sao chép tệp từ cấu trúc thư mục nhưng loại trừ thư mục có tên

Tôi đã thực hiện một vài nỗ lực, nhưng kiến ​​thức về quyền hạn của tôi rất hạn chế.

Ví dụ là nơi cấu trúc tập tin hiện tồn tại:

Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"} 

này mang lại cho tôi tất cả các tập tin tất cả tôi muốn, bao gồm tất cả các file tôi không muốn. Tôi không muốn bao gồm bất kỳ tệp nào nằm trong thư mục 'cũ'. Lưu ý: có nhiều thư mục 'cũ'. Tôi đã thử -exclude, nhưng có vẻ như nó chỉ liên quan đến tên tập tin, và tôi không chắc chắn làm thế nào để -exclude trên một tên đường dẫn, trong khi vẫn sao chép các tập tin.

Bất kỳ trợ giúp nào?

Trả lời

6

Làm thế nào về điều này:

C:\Example*" -include "*.txt -Recurse | 
    ?{$_.fullname -notmatch '\\old\\'}| 
    % {Copy-Item $_.fullname "C:\Destination\"} 

Loại trừ tất cả những gì có '\ cũ \' bất cứ nơi nào trong đó là con đường.

+0

Cảm ơn, đây là những gì tôi đang tìm kiếm! – Feety

+0

Câu hỏi có một chút mơ hồ, và tôi không thể biết một thư mục "cũ" có chứa thư mục con hay không. Điều này loại trừ cả hai. – mjolinor

+0

Có, nó không rõ ràng, và tôi đã muốn các thư mục con 'cũ' bị loại trừ. Tôi nên xác định điều đó. Cảm ơn một lần nữa! – Feety

4

Nếu chúng tôi lẻn một chút where-object vào đường ống, tôi nghĩ bạn sẽ có được những gì bạn tìm kiếm. Mỗi đối tượng có thuộc tính có tên là Directory (System.IO.FileInfo) với thuộc tính có tên Name có giá trị old sẽ không được chuyển đến Copy-Item.

Get-ChildItem -Path "C:\Example*" -include *.txt -Recurse | ? {-not ($_.Directory.Name -eq "old")} | % {Copy-Item $_.fullname "C:\Destination\"} 

(chưa được kiểm tra)

+0

Cảm ơn, đây là những gì tôi yêu cầu. Tôi đánh giá cao sự giải thích về cách truy cập tên thư mục. Điều này sẽ chứng minh hữu ích. Cảm ơn bạn! – Feety