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

如何用PowerShell获取Windows系统D盘所有含子目录的文件夹大小?

获取D盘所有文件夹大小的PowerShell实现

要递归获取D盘所有文件夹(包含子目录)的大小,你需要遍历每个目录并计算其内部所有文件的大小总和。以下是两种实用的实现方式:

方法一:逐目录递归计算

Get-ChildItem -Path "D:\" -Directory -Recurse | ForEach-Object {
    $totalSize = (Get-ChildItem -Path $_.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        文件夹路径 = $_.FullName
        字节大小 = $totalSize
        MB大小 = [math]::Round($totalSize / 1MB, 2)
        GB大小 = [math]::Round($totalSize / 1GB, 2)
    }
} | Sort-Object -Property 字节大小 -Descending

代码说明:

  • -Directory -Recurse:递归列出D盘下所有文件夹
  • 对每个文件夹,遍历其下所有文件并通过Measure-Object计算总大小
  • 用PSCustomObject输出结构化结果,包含多种单位的大小,方便直观查看
  • 最后按大小倒序排列,快速定位占用空间大的文件夹

方法二:高效分组计算(减少重复遍历)

如果D盘文件数量较多,方法一的重复递归遍历会影响效率,可先一次性获取所有文件再按目录分组计算:

Get-ChildItem -Path "D:\" -File -Recurse | Group-Object -Property DirectoryName | ForEach-Object {
    $totalSize = ($_.Group | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        文件夹路径 = $_.Name
        字节大小 = $totalSize
        MB大小 = [math]::Round($totalSize / 1MB, 2)
        GB大小 = [math]::Round($totalSize / 1GB, 2)
    }
} | Sort-Object -Property 字节大小 -Descending

代码说明:

  • 一次性递归获取D盘所有文件,按所在目录分组
  • 对每组(对应一个目录)计算文件总大小,避免重复遍历目录结构,效率更高
  • 输出格式与方法一致,同样支持排序

注意事项:

  • 运行时可能需要管理员权限,否则部分系统或受保护文件夹会因权限不足无法访问
  • 计算大目录需要一定时间,耗时取决于D盘的文件数量和总大小
  • 若不需要多单位显示,可删除MB大小和GB大小字段简化输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:32:36