PowerShell批量删除指定子文件夹,保留LastWriteTime最新的文件夹
解决指定格式子文件夹的批量删除问题
需求说明
处理目录下格式为TestFolder-sep-XXXXXX的子文件夹:
- 按
LastWriteTime降序排序 - 保留最新的1个文件夹,删除其余所有
原代码问题分析
原代码存在两个核心问题:
- 使用
-Name参数导致仅返回文件夹名称,而非完整路径,Remove-Item无法定位到目标文件夹,因此执行无效或报错 - 对
-Recurse参数的误用:当前需求只需要处理目标目录下的直接子文件夹,无需递归遍历更深层级;若要删除文件夹及其内部内容,只需在Remove-Item后添加-Recurse,前提是传递正确的目标路径
正确实现代码
$loc = "C:\Temp" $filter = "TestFolder-sep*" # 获取目标文件夹对象,按LastWriteTime降序排序,跳过最新的1个,删除其余 Get-ChildItem -Path $loc -Filter $filter -Directory | Sort-Object LastWriteTime -Descending | Select-Object -Skip 1 | Remove-Item -Recurse -Force
代码说明
-Directory:明确只获取文件夹,避免误处理文件- 不使用
-Name:直接传递FileSystemInfo对象给Remove-Item,确保路径正确 -Recurse -Force:强制删除文件夹及其内部所有内容,无需额外确认
内容的提问来源于stack exchange,提问作者Keturah
相关产品推荐
相关产品推荐

