2016-11-28 10 views
1

特定のディレクトリのさまざまなジョブフォルダに含まれる2週間以上経過したワークスペースフォルダのみを削除する必要があります。いくつかの例外を除いて2週間以上経過した特定のフォルダを削除する

:私のルートディレクトリC:\DeleteTestは4つのフォルダが含まれています

Job1 
Job2 
Job3 
Job4 

これらの各フォルダは、ファイルやフォルダworkspaceのリストが含まれています。 このworkspaceフォルダを削除する必要があります。より、例外は、のワークスペースフォルダのJob2です。

+0

なぜJOB2:最後に、Remove-Itemコマンドレットを使用してフォルダを削除?どの基準? – 4c74356b41

+0

これは単なる例です。削除されるべきではない古い2週間の仕事のリストがあります。 – ShrKavs

答えて

0

Get-ChildItemコマンドレットを2回呼び出すとします。初めてC:\DeleteTestのすべてのサブフォルダを取得すると、$excludeFolders内のすべてのフォルダが除外されます。 2回目に、このフォルダ内のすべてのワークスペースディレクトリを取得し、目的の作成時間でフィルタリングします。

$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

これは、ジョブフォルダ内のすべてのファイルとフォルダを削除しませんか?それぞれのジョブフォルダから削除するフォルダ 'workspace'だけが必要です。 – ShrKavs

+0

よく、あなたのニーズに合わせて答えを修正したいと思っています。私はそれを更新しました – 4c74356b41

+0

例えば、各仕事フォルダに 'workspace'フォルダ、 'test'フォルダ、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 
関連する問題