我有一个脚本可以自动删除早于x天的文件。
$dump_path = "C:\Backup\GroupPolicies"
$max_days = "-7"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Recurse -Force
但是,我希望它能够查找 文件夹时间戳而不是文件时间戳 。有这样的方法吗?我到处搜索,但我看到的只是文件时间戳。
答案 0 :(得分:1)
如果您仅限于PowerShell 2.0,那么您可以执行类似的操作,但效率会有点低。
Get-ChildItem $dump_path -Recurse |
Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $del_date } |
Get-ChildItem -Recurse |
Remove-Item -Recurse -Confirm:$False -Force -WhatIf
获取与日期条件匹配的所有文件夹。然后为每个文件夹获取所有子项目。这可能包括更多文件夹。因此,如果您的层次结构很复杂,那么它将会崩溃,并且需要更复杂的逻辑。
使用-WhatIf
确保代码隔离了您想要的文件。
使用PowerShell至少3.0,您可以使用-Directory
的{{1}}开关参数
Get-ChildItem