回答

10

使用的Get-ChildItem命令-Recurse選項以獲得通過的文件在子文件夾中,然後通過管道收集移動每個單獨到Move-Item

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

以下是截圖:

screenshot

+0

Musaab。 -Recursive似乎沒有工作。你能進一步幫助嗎? – user1926332 2013-02-18 12:35:12

+0

你確定這些文件符合where-object子句嗎? 我會用屏幕截圖更新我的答案,以說明我如何使用-Recursive選項。檢查它並讓我知道我在做什麼不同。 – 2013-02-18 12:51:09

+0

嘿,非常感謝穆薩布......我其實是錯過了一個人物。 – user1926332 2013-02-19 15:50:25

12

不要浪費時間在PowerShell中重新發明robocopy

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

此腳本正在複製文件到目的地,只有從主路徑。我想包括子文件夾。我想將它們移動到另一個位置。 – user1926332 2013-02-18 12:17:35

+1

使用'/ s'遞歸到子文件夾中。使用'/ e'(而不是'/ s')來包含空的子文件夾。 「另一個位置」是什麼意思?你不想保留文件夾結構嗎?在這種情況下,你可以堅持使用PowerShell(使用'-Recursive'選項,就像@Musaab提到的那樣)。不過,這種方法會讓你面臨因覆蓋文件而丟失數據的風險。 – 2013-02-18 12:31:19

+0

感謝Ansgar ....您的robocopy腳本完成了我想要的工作,並且我可以爲另一個用法創建另一個腳本。 – user1926332 2013-02-19 15:51:26

6

簡化上述
robocopy A:\ B:\ /MIR /minage:31
凡 A的:\是您的源 B:\是您的目的地

0

我需要一個快速班輪要將所有數據從一個驅動器到另一個。這對我來說非常合適:

Get-ChildItem「E:」-Recurse | Move-Item-Desination「G:」

相關問題