2016-11-28 49 views
1

我需要刪除包含在特定目錄中各個作業文件夾中的工作區文件夾,該文件夾早於2周。刪除2周以前的特定文件夾,但有一些例外情況

:我的根目錄C:\DeleteTest包含4個文件夾:

這些文件夾的
Job1 
Job2 
Job3 
Job4 

每個包含的文件列表及文件夾workspace。 我需要刪除這個workspace文件夾,其中大於2周例外工作空間文件夾從Job2

+0

爲什麼作業2?什麼標準? – 4c74356b41

+0

這只是一個例子。有一份不應該刪除的較長的2周工作清單。 – ShrKavs

回答

0

我會調用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 
0
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預計完全吻合,所以Job2Job將不匹配。

+0

這不會刪除作業文件夾中的所有文件和文件夾嗎?我只需要從每個作業文件夾中刪除文件夾的「工作區」。 – ShrKavs

+0

好,在你要修改的答案,以滿足您的需求的話,我已經 – 4c74356b41

+0

更新它舉例來說,如果每個作業文件夾中有「工作區」文件夾,「測試」文件夾和3個DOC文件。 – ShrKavs

-1
gci "C:\temp\DeleteTest\Job*\workspace" -directory | 
    ? { $_.FullName -notlike "C:\temp\DeleteTest\Job2\*" -and $_.CreationTime -le (get-date).AddDays(-14)} | 
     Remove-Item -Recurse -Force 
相關問題