2012-07-19 43 views
8

Xin chào Tôi đang đấu tranh mạnh mẽ với những điều sau đây - giả sử tôi có cấu trúc thư mục sau C: \ Temp \ Test1 và C: \ Temp \ Test2Sao chép mục/Xóa-mục nội dung con mà không có thư mục gốc?

Điều tôi muốn làm là đệ quy sao chép nội dung con C: \ Temp \ Test1 để C: \ Temp \ Test2 mà không cần sao chép vào thư mục C thực tế: \ Temp \ Test1 ..right bây giờ nếu tôi sử dụng lệnh

Copy-Item C:\Temp\Test1 C:\Temp\Test2 -Recurse 

sẽ dẫn đến C: \ Temp \ Test2 \ Test1 và không có sự kết hợp của các tham số dường như làm giảm bớt vấn đề

Tương tự, khi tôi muốn xóa tất cả nội dung con trong C: \ Temp \ Test2 Tôi chỉ muốn xóa nội dung con và không phải là thư mục thực tế, ví dụ:

Remove-Item C:\Temp\Test2\ -Recurse 

Đang xóa thư mục \ Test2. Tôi đã thử rất nhiều biến thể của các tham số - làm thế nào tôi có thể hoàn thành những gì tôi đang cố gắng làm?

Trả lời

5

Hãy xem lệnh get-childitem. Bạn có thể sử dụng trong các đường ống để sao chép hoặc xóa tất cả các mục bên dưới thư mục gốc:

# recursively copy everything under C:\Temp\Test1 to C:\Temp\Test2 
get-childitem "C:\Temp\Test1" | % { 
    copy-item $_.FullName -destination "C:\Temp\Test2\$_" -recurse 
} 

# recursively remove everything under C:\Temp\Test1 
get-childitem "C:\Temp\Test1" -recurse | % { 
    remove-item $_.FullName -recurse 
} 
+0

Nhờ đó đã làm các trick. – blue18hutthutt

+1

Lưu ý rằng bạn không cần phải gói các lệnh ghép ngắn trong một foreach ('... |% {cmdlet $ _. FullName ...}'); cả ['Copy-Item'] (http://go.microsoft.com/fwlink/?LinkID=113292) và [' Remove-Item'] (http://go.microsoft.com/fwlink/?LinkID= 113373) sẽ tự động chấp nhận đầu vào từ đường ống. Ví dụ. ví dụ thứ hai có thể được đơn giản hóa thành 'Get-ChildItem '$ env: temp \ Test1" | Remove-Item -Recurse'. –

8
Copy-Item C:\Temp\Test1\* C:\Temp\Test2 
    Remove-Item "C:\Temp\Test2\*" -recurse 

Làm việc quá :)

+0

bản sao-mục bảo quản (ngay cả với recurse hoặc container) một cấu trúc thư mục trong Test1 .... –

Các vấn đề liên quan