【发布时间】:2017-06-02 13:50:42
【问题描述】:
下面的脚本在E:\WebDelivery\MagicOS 目录中查找文件夹。如果此目录中的任何文件夹超过 14 天,它将删除它们及其子目录。它排除了名为upd.info.raf.的文件
我需要将脚本更改为仅在子目录中查找修改日期,如果该日期超过 14 天,则需要删除这些文件夹及其内容,但保留 S6.15、T7.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 等...
这就是我难过的地方。任何想法都会有所帮助。这是现有的脚本。
$Today = Get-Date
$DaysToKeep = 14
$TargetFolder = "E:\WebDelivery\MagicOS"
$LastWrite = $Today.AddDays(-$DaysToKeep)
$excludeFolders = @("testdir","testdir2")
$Folders = Get-Childitem –path $Targetfolder |
Where {$_.psIsContainer} |
Where {$_.LastWriteTime -le "$LastWrite"} |
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" -Recurse
If ($items) {
Write-Host "Removing: $($Folder.Name)"
# $items | 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."
}
【问题讨论】:
标签: powershell-2.0 directory subdirectory