2017-06-02 6 views
0

以下のスクリプトは、E:\WebDelivery\MagicOSディレクトリにあるフォルダを検出します。このディレクトリ内のいずれかのフォルダが14日以上経過している場合は、そのフォルダとそのサブディレクトリが削除されます。​​3210第2レベルのサブディレクトリを削除します

サブディレクトリで修正日を探すようにスクリプトを変更する必要があります。その日付が14日より古い場合は、それらのフォルダとその内容を削除する必要がありますが、残しておく必要がありますS6.15T7.12タイプの親ディレクトリだけです。ここで

は、フォルダ構造です: E:\WebDelivery\MagicOS - この下>>ディレクトリS6.15, T7.12, S5.6などであり、それらのそれぞれの下に名前1,2,3などとして数字とおそらくupd.info.raf

と呼ばれるファイルとディレクトリすべてがあります
E\WebDelivery\MagicOS ->> S6.15 
         ->> 1 
         ->> 2 

現在、このスクリプトでは、変更された日付のS6.15レベルのフォルダをチェックしていて、14日以上経過している場合はそのフォルダとそのサブディレクトリを削除しています。私は代わりに、修正された日付のサブディレクトリ1,2,3などの番号をチェックし、14日以上経過していても親のS6.15ディレクトリから離れる場合は削除する必要があります。基本的には、S6.15フォルダの日付については、数字のサブフォルダ1,2,3などしか気にしません。

これは私が困惑している場所です。どんなアイデアも参考になるでしょう。ここに既存のスクリプトがあります。

答えて

0

私は実際にこれを自分で判断することができました。 foreachループを追加して、サブディレクトリの各子アイテムを処理し、古いフォルダを削除しました。ここで

は、変更したスクリプトです:

$Today = Get-Date 
$DaysToKeep = 14 
$TargetFolder = "E:\WebDelivery\testdir" 
$LastWrite = $Today.AddDays(-$DaysToKeep) 
$excludeFolders = @("testdir","testdir2") 

$Folders = Get-Childitem –path $Targetfolder | 
Where {$_.psIsContainer} | 
Where {$excludeFolders -notcontains $_.Name} 

If ($Folders) { 
foreach ($Folder in $Folders) { 
     Write-Host "Processing Folder $($Folder.Name)" 
     $items = Get-ChildItem -Path $Folder.FullName -Exclude 
"upd.info.raf" | Where {$_.LastWriteTime -le "$LastWrite"} 
     If ($items) { 
     foreach ($item in $items){ 
     Write-Host "Removing: $($item.FullName)" 
     $item | Remove-Item -Recurse -Verbose 
     } 

     } Else { 
      Write-Host "There are no items to remove in $($Folder.Name)" 
     } 
    } 
} Else { 
Write-Host "There are no folders to empty." 
関連する問題