使用powershell我想搜索多個目錄中包含1個名爲incoming的文件夾的子文件夾數組,並將文件從傳入文件移動到臨時區域使用相同的文件夾名稱作爲其來源。將子文件夾陣列中的文件移動到具有相同陣列名稱的新目錄中
IE:文件到文件夾中是這樣的:
Z:\文件夾1 \進入\文件*,Z:\文件夾2 \進入\文件*,Z:\ folder3 \ SUB1 \進入\文件。 *,Z:\ folder3 \ SUB2 \來電\文件*等
然後將需要使用相同的文件夾結構被移動到一個臨時區域:
\ NAS \分期\ folder1中\來電\文件*,\ nas \ staging \ folder2 \ incoming \ file。*,\ nas \ staging \ folder3 \ sub1 \ incoming \ file。*,\ nas \ staging \ folder3 \ sub2 \ incoming \ file。*等
基本上我想從中提取的唯一子文件夾是包含帶有文件的「傳入」文件夾的文件夾。由於沒有預定義的文件夾名稱,除了子文件夾「Incoming」,我需要遍歷Z:內的每個文件夾。
任何幫助或建議將不勝感激。
我能夠想出這個辦法,將不包括「傳出」的文件夾結構有情調地移動到暫存目錄中,但是在我的環境中,會有許多排除項來檢查這種方式。如果需要,還有機會將文件從列表中移動到特定文件夾?
$from = 'C:\ftp'
$to = 'C:\staging'
$excludeMatch = @("Outgoing")
Get-ChildItem -Path $from -Recurse -Exclude $exclude |
where { $excludeMatch -eq $null -or $_.FullName.Replace($from, "") -notmatch $excludeMatch } |
Copy-Item -Destination {
if ($_.PSIsContainer) {
Join-Path $to $_.Parent.FullName.Substring($from.length)
} else {
Join-Path $to $_.FullName.Substring($from.length)
}
} -Force -Exclude $exclude
到目前爲止您嘗試過什麼?這是PowerShell的一個相當簡單的任務,但這裏的人不會爲你編寫整個腳本。 – alroc
使用Robocopy可能會更好地解決這個問題。 Robocopy可以基於名稱匹配模式複製文件並維護目錄結構。 – alroc