下面的脚本找到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
答案 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."