如何用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"
注意事项:
- 如果目录里有大量文件,递归统计可能会花费一些时间,耐心等待即可
- 确保你拥有这些目录的读取权限,否则会出现权限不足的报错
- 要是需要保留更多小数位,修改
[math]::Round的第二个参数就行(比如改成3就是三位小数)
内容的提问来源于stack exchange,提问作者Geri Reshef
相关产品推荐
相关产品推荐

