PowerShell一行命令可快速统计指定目录总大小:Get-ChildItem -Recurse -File | Measure-Object -Property Length -Sum | ForEach-Object { "{0:N2} MB" -f ($_.Sum / 1MB) },支持加-Force和-ErrorAction SilentlyContinue包含隐藏/系统文件,或用-Exclude、Where-Object过滤特定文件或目录。
直接用 powershell 一行命令就能算出指定目录的总大小,不需要第三方工具,也不用打开属性窗口一个个点。
快速统计整个目录总容量
这是最常用也最简洁的方法,适合快速查看目标文件夹占用了多少空间:
- 打开 PowerShell(Win+R → 输入 powershell → 回车)
- 用 cd 切换到目标目录,比如:
cd "D:Projects" - 运行这行命令:
Get-ChildItem -Recurse -File | Measure-Object -Property Length -Sum | ForEach-Object { "{0:N2} MB" -f ($_.Sum / 1MB) }
它会递归扫描所有文件(不含空文件夹),累加字节数并自动换算成 MB,保留两位小数。如果想看 GB,把 / 1MB 换成 / 1GB 即可。
包含隐藏和系统文件的完整统计
默认情况下,PowerShell 会跳过隐藏或受保护的系统文件。如果目标目录里有这类文件(比如 AppData、ProgramData),需要显式加上权限参数:
- 命令末尾加 -Force 和 -ErrorAction SilentlyContinue,避免因权限不足中断:
- Get-ChildItem "D:Backup" -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum | ForEach-Object { "{0:N2} GB" -f ($_.Sum / 1GB) }
这样能更接近磁盘实际占用量,尤其适用于备份目录、用户配置目录等场景。
统计时跳过某些类型文件(可选优化)
如果目录里有大量临时文件、日志或缓存(如 .tmp、.log、node_modules),而你只想看“有效内容”大小,可以过滤掉:
- 排除特定扩展名:
Get-ChildItem "D:Docs" -Recurse -File -Exclude "*.tmp","*.log" | Measure-Object -Property Length -Sum | ForEach-Object { "{0:N1} MB" -f ($_.Sum / 1MB) } - 排除大目录(如跳过 .git):
Get-ChildItem "D:Repo" -Recurse -File | Where-Object { $_.DirectoryName -notlike "*.git*" } | Measure-Object -Property Length -Sum | ForEach-Object { "{0:N1} MB" -f ($_.Sum / 1MB) }
注意几个实际细节
PowerShell 统计的是文件内容实际字节大小,不是磁盘簇占用量(后者通常略大)。另外:
- 不要在 C:Windows 或 C:Program Files 这类系统目录直接运行,可能因权限问题漏掉关键数据,且耗时长
- 网络路径(如 \servershare)也能用,但需确保有读取权限
- 结果单位是二进制 MB(1MB = 1024×1024 字节),和 Windows 文件属性里显示的一致

















