如何修改PowerShell脚本不使用Temp变量保留最新5个文件夹并删除其余
PowerShell 脚本修改方案(无需临时目录保留最新5个文件夹)
核心思路
原脚本通过临时目录中转的逻辑完全冗余,我们可以直接反向筛选需要删除的对象:先捞出目标路径下所有文件夹,按创建时间倒序排序后跳过要保留的前5个,剩下的直接删除即可,不需要临时目录做中转。
修改后完整脚本
# 定义目标路径 $path = "D:\AccountServiceQAT" # 自定义保留的最新文件夹数量 $keepCount = 5 # 可选:删除目标路径根目录下所有单独的文件(非文件夹内的内容),如果根目录无单独文件可删除本段 Get-ChildItem -Path $path -File | Remove-Item -Force # 筛选并删除超出保留数量的旧文件夹 Get-ChildItem -Path $path -Directory | Sort-Object -Property CreationTime -Descending | Select-Object -Skip $keepCount | Remove-Item -Recurse -Force
说明
- 代码中使用
-Directory参数替代了原脚本中的Where {$_.PSIsContainer},是PowerShell 3.0及以上版本原生支持的语法,写法更简洁,兼容性足够。 - 原脚本中定义的
$limit变量全程未被使用,新脚本直接移除即可。 - 如果需要按修改时间排序而非创建时间,把
CreationTime替换为LastWriteTime即可。 - 新增的
-Force参数用于避免遇到只读属性的文件/文件夹删除失败的问题,不需要可自行移除。 - 调整保留的文件夹数量只需修改
$keepCount的数值即可,无需改动其他逻辑。
内容的提问来源于stack exchange,提问作者Surya8985
相关产品推荐
相关产品推荐

