删除二级子目录

时间:2017-06-02 13:50:42

标签: powershell-v2.0 directory subdirectory

下面的脚本找到E:\WebDelivery\MagicOS目录中的文件夹。如果此目录中的任何文件夹超过14天,则会删除它们及其子目录。它排除了名为upd.info.raf.

的文件

我需要将脚本更改为仅查看修改日期的子目录,如果该日期超过14天,则需要删除这些文件夹及其内容,但保留S6.15,{ {1}}单独输入父目录。

这是文件夹结构: T7.12 - >>在这下面是目录E:\WebDelivery\MagicOS等,在每个目录下都有名称为1,2,3等的数字目录,可能还有一个名为S6.15, T7.12, S5.6的文件

upd.info.raf

目前,脚本正在检查E\WebDelivery\MagicOS ->> S6.15 ->> 1 ->> 2 级别文件夹中的修改日期,并删除文件夹及其子目录(如果它们超过14天)。我需要检查修改日期的数字子目录1,2,3等,如果它们早于14天,则删除它们,但保留父S6.15目录。基本上我不关心S6.15文件夹上的日期只有数字子文件夹1,2,3等...

这是我难倒的地方。任何想法都会有所帮助。这是现有的脚本。

S6.15

1 个答案:

答案 0 :(得分: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."