我有一个目录,它包含许多子目录。例如:“\ IP \ Share \ Directory \ Machine \ Year \ Month \ Date \ Image_ID”无论内容如何,基于创建日期删除目录
问题是这个目录存储图像,我需要删除任何存储的图像超过730天。问题是“Image_ID”文件夹中有数百个图像。有时您最多可以创建多达100个“Image_ID”文件夹。我需要制作一个PowerShell脚本,它将搜索目录创建日期,进行排序,并将目录壁橱移至创建时间超过730天的“IP地址”(不是图像/文件,因为此过程可能需要一整天)。
这是一项日常任务,我需要尽量减少任务的持续时间。所以我想通过搜索目录日期,而不是文件日期。
这是我正在使用的脚本,它适用于我。但其采取非常长的时间完成,它运行在相同的删除线多次简单地删除子目录的文件夹:
Param (
[string]$Source = "\IP\Share\Directory\Machine\Year\Month\Date\Image ID",
[string]$Days = "730"
)
$Folder = Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -le (get-date).adddays(-$($Days)) }
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
$Folder = Get-ChildItem $source -Recurse -Force | Where {$_.PSIsContainer} | Sort-Object FullName -Descending | Where {!(Get-ChildItem $_.FullName -Force)}
$Folder | Remove-Item -Force
stop-process -Id $PID
}
如果我没有解释正确的东西,我会尽力和澄清。我是PowerShell的新手,这个脚本是我制作的多个脚本的组合。
我不确定我关注。你似乎多次重复相同的代码块! – gvee