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

如何用PowerShell获取指定多目录文件的总GB容量

PowerShell统计多个指定目录的文件总容量(GB)

没问题,这事儿在PowerShell里轻松搞定,我给你分两种常见场景提供方案,你根据自己的需求选:

场景1:只统计指定目录下的直接文件(不含子目录)

如果你只想算每个目标目录本身里的文件,不包含它们的子目录内容,用这段脚本:

# 定义需要检查的目录列表,想加新目录直接往数组里加就行
$targetDirs = @("C:\MyDir1\", "C:\MyDir2\", "C:\MyDir3\")

# 初始化总容量变量(默认字节单位)
$totalSizeBytes = 0

foreach ($dir in $targetDirs) {
    # 先检查目录是否存在,避免报错中断
    if (Test-Path -Path $dir -PathType Container) {
        # 获取当前目录下的所有文件(-File 只取文件,-Depth 0 不遍历子目录)
        $files = Get-ChildItem -Path $dir -File -Depth 0
        # 累加所有文件的大小总和
        $totalSizeBytes += ($files | Measure-Object -Property Length -Sum).Sum
    } else {
        Write-Warning "警告:目录 $dir 不存在,已跳过该目录"
    }
}

# 转换为GB单位并保留两位小数
$totalSizeGB = [math]::Round($totalSizeBytes / 1GB, 2)
Write-Host "指定目录下所有文件的总容量为:$totalSizeGB GB"

关键参数说明:

  • $targetDirs:把你要统计的目录都放在这个数组里,后续扩展目录非常方便
  • Test-Path:提前校验目录是否存在,避免因为无效目录导致脚本终止
  • -File -Depth 0:严格限制只取当前目录下的文件,不会涉及子目录内容
  • Measure-Object -Property Length -Sum:统计文件的字节总大小,再通过/1GB转换为GB单位,用[math]::Round让结果更美观

场景2:统计指定目录及所有子目录的文件(递归统计)

如果需要把每个目标目录下的子文件也一起统计,只需要修改Get-ChildItem的参数,把-Depth 0换成-Recurse即可:

$targetDirs = @("C:\MyDir1\", "C:\MyDir2\", "C:\MyDir3\")
$totalSizeBytes = 0

foreach ($dir in $targetDirs) {
    if (Test-Path -Path $dir -PathType Container) {
        # 递归获取当前目录及所有子目录下的文件
        $files = Get-ChildItem -Path $dir -File -Recurse
        $totalSizeBytes += ($files | Measure-Object -Property Length -Sum).Sum
    } else {
        Write-Warning "警告:目录 $dir 不存在,已跳过该目录"
    }
}

$totalSizeGB = [math]::Round($totalSizeBytes / 1GB, 2)
Write-Host "指定目录(含所有子目录)下所有文件的总容量为:$totalSizeGB GB"

简洁版写法(管道风格)

如果你喜欢更紧凑的代码,也可以用管道一次性完成所有操作:

$targetDirs = @("C:\MyDir1\", "C:\MyDir2\", "C:\MyDir3\")

# 过滤存在的目录 → 统计每个目录的文件大小总和 → 累加所有总和 → 转换为GB
$totalSizeGB = [math]::Round(
    ($targetDirs | Where-Object { Test-Path $_ -PathType Container } | ForEach-Object {
        (Get-ChildItem -Path $_ -File -Depth 0 | Measure-Object -Property Length -Sum).Sum
    } | Measure-Object -Sum).Sum / 1GB,
    2
)

Write-Host "总容量:$totalSizeGB GB"

注意事项:

  1. 如果目录里有大量文件,递归统计可能会花费一些时间,耐心等待即可
  2. 确保你拥有这些目录的读取权限,否则会出现权限不足的报错
  3. 要是需要保留更多小数位,修改[math]::Round的第二个参数就行(比如改成3就是三位小数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:17