如果所有文件都超过x天,则Powershell删除文件夹

时间:2017-03-08 08:36:08

标签: powershell directory

我是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"
        }
    }

1 个答案:

答案 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