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

使用PowerShell查询磁盘中占用超10GB的文件夹及存储路径

PowerShell大文件夹查询脚本优化解答

原有脚本可行性判断

你编写的脚本可以实现基础的指定路径下前2层目录的文件夹大小统计功能,但未完成「筛选超过10GB文件夹」的核心需求,同时存在执行效率低、重复遍历文件的问题。

原有脚本存在的问题

  • 没有添加10GB大小的过滤逻辑,所有文件夹都会输出,需要你手动二次筛选符合条件的条目
  • 存在重复遍历的冗余逻辑:第一次Get-ChildItem已经遍历了C盘前2层的所有文件和文件夹,计算文件夹大小时又对每个文件夹单独递归遍历一次,相同文件会被多次读取,C盘文件量较大时执行速度会非常慢
  • 输出的大小为字节单位,可读性差
  • 未过滤无权限访问的系统目录,会出现大量无意义的空值统计结果

优化后可用脚本

# 定义扫描根目录
$RootPath = "C:"
# 定义大小阈值:10GB
$SizeThreshold = 10GB

# 仅遍历根目录下前2层的文件夹
Get-ChildItem -Path $RootPath -Directory -Recurse -Depth 2 -ErrorAction SilentlyContinue | ForEach-Object {
    # 计算当前文件夹总大小
    $totalSize = (Get-ChildItem -Path $_.FullName -File -Recurse -ErrorAction SilentlyContinue | Measure-Object -Sum Length).Sum
    # 仅输出超过10GB的文件夹
    if ($totalSize -ge $SizeThreshold) {
        $_ | Select-Object Name, FullName, @{
            Name = "占用空间(GB)"
            Expression = { [math]::Round($totalSize / 1GB, 2) }
        }
    }
}

优化点说明

  • 第一次遍历直接用-Directory参数过滤仅保留文件夹,不需要后续循环内再判断属性,减少无效运算
  • 新增10GB阈值过滤逻辑,直接输出符合需求的结果,无需手动筛选
  • 新增字节到GB的单位转换,保留2位小数,结果可读性更强
  • 计算文件夹大小时直接用-File参数过滤文件,无需额外写属性判断逻辑,代码更简洁
  • 所有文件操作都添加了静默忽略错误的配置,避免系统权限目录报错中断执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:42:01