You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell按修改日期删除文件并清理空父文件夹?

PowerShell脚本修改方案

问题分析

你的现有脚本直接删除了最后修改时间超过30天的目录,但没有先清理目录内的过期文件,也无法处理文件删除后变成空的父目录。需要调整逻辑,分两步执行:先清理过期文件,再从最深层开始清理空目录。

修改后的脚本

# 定义目标路径和时间阈值(30天前)
$folderPath = "E:\Data\Report"
$limit = (Get-Date).AddDays(-30)

# 第一步:遍历所有子目录,删除最后修改时间超过30天的文件
Get-ChildItem -Path $folderPath -Recurse -File | 
    Where-Object { $_.LastWriteTime -lt $limit } | 
    Remove-Item -Force

# 第二步:从最深层目录开始遍历,删除空文件夹(包括隐藏文件夹)
Get-ChildItem -Path $folderPath -Recurse -Directory | 
    Sort-Object -Property FullName -Descending | 
    ForEach-Object {
        # 检查当前文件夹是否为空(Force参数确保检测隐藏项)
        if (-not (Get-ChildItem -Path $_.FullName -Force)) {
            Remove-Item -Path $_.FullName -Force
        }
    }

关键说明

  • 先删文件再处理文件夹:确保先清理过期文件,避免误删仍有有效文件的目录。
  • 从最深层开始删空文件夹:通过Sort-Object -Property FullName -Descending让脚本先处理子目录,再处理父目录。这样当子目录被删除后,父目录如果变成空的,也能被检测并删除。
  • Force参数:处理隐藏文件或文件夹,避免遗漏需要清理的项目。
  • 空文件夹判断:-not (Get-ChildItem -Path $_.FullName -Force)会检查文件夹内是否有任何内容(包括隐藏项),如果没有则返回$true,执行删除操作。

注意事项

  • 测试脚本时可以先去掉Remove-Item命令,用Write-Output输出要删除的文件和文件夹,确认无误后再执行删除操作。
  • 如果你的主目录实际是GLASSART,只需修改$folderPath的值为对应的路径即可。

内容的提问来源于stack exchange,提问作者Benjamin Derepas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:12:42