powershell - PowerShell 递归中的后序遍历
问题描述
Powershell 中的 Get-ChildItem -Recurse 当前以级别顺序方式遍历目录。有没有办法在Powershell中以后序方式遍历目录?
我正在尝试删除超过特定时间的文件。删除文件后,如果子文件夹为空,也删除该文件夹。现在正在这样做。
$path = 'D:\Files'
Get-ChildItem -Path $path -Recurse | Where-Object {
(($_.LastWriteTime -lt (Get-Date).AddDays(-30)) -and ($_ -is [system.io.fileinfo]) )
} | Remove-Item
Get-ChildItem -Path $path -Recurse | Where-Object {
($_ -is [System.IO.DirectoryInfo]) -and $_.CreationTime -lt (Get-Date).AddDays(-30) -and ((Get-ChildItem $_.FullName).Count -eq 0)
} | Remove-Item -Force
但我想在一个命令中完成。不作为两个不同的命令。
解决方案
您可以颠倒Get-ChildItem
with返回的项目的顺序[Array]::Reverse
完整脚本:
$items = Get-ChildItem 'D:\Files' -Recurse
[Array]::Reverse($items)
$date = (Get-Date).AddDays(-30)
foreach ($item in $items) {
if ($item.PSIsContainer) {
if ($item.CreationTime -lt $date -and (Get-ChildItem $item.FullName).Count -eq 0) {
Remove-Item $item.FullName
}
}
elseif ($item.LastWriteTime -lt $date) {
Remove-Item $item.FullName
}
}
推荐阅读
- flutter - 在颤动的输入字段上键入时如何更改文本字段
- ios - 如何将与现实世界对象的碰撞应用到 RealityKit 中的 3D 对象 (.usdz)?
- laravel - Laravel:电子邮件未从服务器发送
- java - Java PriorityQueue Comparator 在特定条件下插入二维数组
- javascript - 如何使用 each 和 image.onload 保留数组的顺序
- javascript - api在axios中被阻止
- python - 如何使用 python 脚本在没有熊猫的情况下进行 vlookup
- window - 如何创建具有多个条件计数的 siddhi 应用程序
- html - 配售里面的标签
- html - 使用 flexbox 修复标题和侧边栏,无需手动设置偏移边距