13

Tôi đã phát triển tập lệnh PowerShell và nó hoạt động hoàn toàn tốt. Thách thức duy nhất là các tập tin trong các thư mục con không được di chuyển đến đích.Kịch bản PowerShell để di chuyển các tệp và thư mục bao gồm các thư mục con từ một vị trí này sang vị trí khác cũ hơn x ngày

get-childitem -Path "\\servername\location" | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "C:\Dumps" 

Tôi không thể tùy chỉnh tập lệnh thêm.

Trả lời

10

Sử dụng -Recurse tùy chọn trên lệnh Get-ChildItem để có được thông qua để các tập tin trong thư mục phụ và sau đó di chuyển mỗi cá nhân bằng đường ống thu gom để Move-Item

Get-ChildItem -Path "C:\Test" -Recurse | 
    Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(-31)} | 
    Move-Item -destination "C:\Dumps" 

Dưới đây là một ảnh chụp màn hình:

screenshot

+0

Musaab. The -Recursive dường như không hoạt động. Bạn có thể giúp thêm được không? – user1926332

+0

Bạn có chắc chắn các tệp đáp ứng được mệnh đề where-object không? Tôi sẽ cập nhật câu trả lời của mình bằng ảnh chụp màn hình để minh họa cách tôi đang sử dụng tùy chọn -Recursive. Kiểm tra nó và cho tôi biết tôi đang làm gì khác. –

+0

Xin cảm ơn rất nhiều Musaab .... Tôi đã thực sự thất lạc một nhân vật. – user1926332

12

Đừng lãng phí thời gian của bạn khi cố gắng phát minh lại robocopy trong PowerShell.

robocopy \\servername\location C:\Dumps /e /mov /minage:31 
+0

Tập lệnh này đang sao chép tệp đến đích và chỉ từ chính con đường. Tôi cũng muốn bao gồm các thư mục con. Tôi muốn chuyển chúng đến một địa điểm khác. – user1926332

+1

Sử dụng '/ s' để recurse vào các thư mục con. Sử dụng '/ e' (thay vì'/s') để bao gồm các thư mục con trống. Bạn có ý nghĩa gì bởi "một vị trí khác"? Bạn có muốn giữ lại cấu trúc thư mục không? Trong trường hợp đó, bạn có thể gắn bó với PowerShell (với tùy chọn '-Recursive', như @Musaab đã đề cập). Cách tiếp cận này sẽ khiến bạn có nguy cơ mất dữ liệu do các tệp bị ghi đè. –

+0

Cảm ơn Ansgar .... kịch bản robocopy của bạn đã thực hiện công việc tôi muốn và hơn thế nữa tôi có thể xây dựng thêm một kịch bản để sử dụng khác. – user1926332

6

Đơn giản hoá trên
robocopy A:\ B:\ /MIR /minage:31
đâu A: \ là nguồn của bạn B: \ là điểm đến của bạn

0

tôi cần một cách nhanh chóng lót để di chuyển tất cả dữ liệu ra một ổ đĩa vào cái khác. Điều này làm việc hoàn hảo cho tôi:

Get-ChildItem "E:" -Recurse | Move-Item -Destination "G:"