我需要刪除包含在特定目錄中各個作業文件夾中的工作區文件夾,該文件夾早於2周。刪除2周以前的特定文件夾,但有一些例外情況
例:我的根目錄C:\DeleteTest
包含4個文件夾:
Job1
Job2
Job3
Job4
每個包含的文件列表及文件夾workspace
。 我需要刪除這個workspace
文件夾,其中大於2周與例外工作空間文件夾從Job2
。
我需要刪除包含在特定目錄中各個作業文件夾中的工作區文件夾,該文件夾早於2周。刪除2周以前的特定文件夾,但有一些例外情況
例:我的根目錄C:\DeleteTest
包含4個文件夾:
Job1
Job2
Job3
Job4
每個包含的文件列表及文件夾workspace
。 我需要刪除這個workspace
文件夾,其中大於2周與例外工作空間文件夾從Job2
。
我會調用Get-ChildItem
cmdlet兩次。第一次,檢索C:\DeleteTest
的所有子文件夾,其中排除$excludeFolders
中的所有文件夾。第二次檢索此文件夾中的所有工作區目錄並按照所需的創建時間過濾它們。最後,使用Remove-Item
cmdlet將刪除該文件夾:
$excludeFolders = @('Job2')
Get-ChildItem C:\DeleteTest -Directory | Where Name -NotIn $excludeFolders |
Get-ChildItem -Filter 'workspace' -Directory | Where { $_.CreationTime -le (Get-Date).Adddays(-14) } |
Remove-Item -Force -Recurse
Get-ChildItem C:\DeleteTest -Directory -Filter Workspace | % {
if ($_.Parent.Name -notin $array_of_folders_not_to_be_deleted -and $_.CreationTime -le (Get-Date).Adddays(-14)) {
Remove-Item $_.FullName -Recurse -Force
}
}
要小心,-notin
預計完全吻合,所以Job2
和Job
將不匹配。
這不會刪除作業文件夾中的所有文件和文件夾嗎?我只需要從每個作業文件夾中刪除文件夾的「工作區」。 – ShrKavs
好,在你要修改的答案,以滿足您的需求的話,我已經 – 4c74356b41
更新它舉例來說,如果每個作業文件夾中有「工作區」文件夾,「測試」文件夾和3個DOC文件。 – ShrKavs
gci "C:\temp\DeleteTest\Job*\workspace" -directory |
? { $_.FullName -notlike "C:\temp\DeleteTest\Job2\*" -and $_.CreationTime -le (get-date).AddDays(-14)} |
Remove-Item -Recurse -Force
爲什麼作業2?什麼標準? – 4c74356b41
這只是一個例子。有一份不應該刪除的較長的2周工作清單。 – ShrKavs