我是PowerShell的新手,对此并不了解。
如果此文件中的所有文件都超过x天,我正在搜索删除文件夹和所有子文件夹的方法。我有一个代码删除文件夹和所有子文件夹中的所有文件,但我不知道如何正确更改它。
$Now = Get-Date
$Days = "30"
$TargetFolder = "C:\temp"
$Extension = "*.*"
$LastWrite = $Now.AddDays(-$Days)
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {($_.CreationTime -le "$LastWrite") -and ($_.LastWriteTime -le "$LastWrite")}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
write-host "Deleting File $File" -ForegroundColor "Red"
Remove-Item $Location.FullName | out-Null
}
else
{
Write-Host "No more files to delete!" -foregroundcolor "Green"
}
}
答案 0 :(得分:1)
枚举所有文件夹并首先对它们进行最长路径排序,以便从头到尾处理目录:
Get-ChildItem $TargetFolder -Recurse -Directory |
Select-Object -Expand FullName |
Sort-Object Length -Desc
过滤列表中没有任何比x天更新的文件或文件夹的目录:
... | Where-Object {
-not $(Get-ChildItem $_ -Recurse | Where-Object {
$_.Creationtime -ge $LastWrite -or
$_.LastWriteTime -ge $LastWrite
})
}
然后删除生成的文件夹:
... | Remove-Item -Recurse -Force