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

PowerShell脚本开发:如何获取多文件夹及子文件夹的路径、文件数与大小

PowerShell递归统计文件夹路径、文件数及总大小

修改后的完整脚本

$folders = @('C:\Directory1','C:\Directory2','C:\Directory3')
$output = foreach ($rootFolder in $folders) {
    # 获取当前根目录及其所有子文件夹(含空文件夹)
    $allFolders = Get-ChildItem -Path $rootFolder -Directory -Recurse -Force
    $allFolders += Get-Item -Path $rootFolder  # 加入根目录本身

    # 一次性递归获取所有文件,按所在文件夹分组统计
    $allFiles = Get-ChildItem -Path $rootFolder -File -Recurse
    $fileStats = $allFiles | Group-Object -Property DirectoryName -AsHashTable -AsString

    # 遍历每个文件夹,匹配统计数据
    $allFolders | ForEach-Object {
        $folderPath = $_.FullName
        $folderFiles = $fileStats[$folderPath]
        
        [pscustomobject]@{
            Folder          = $folderPath
            FileCount       = if ($folderFiles) { $folderFiles.Count } else { 0 }
            TotalSizeBytes  = if ($folderFiles) { ($folderFiles | Measure-Object -Property Length -Sum).Sum } else { 0 }
            TotalSizeMB     = if ($folderFiles) { [math]::Round(($folderFiles | Measure-Object -Property Length -Sum).Sum / 1MB, 2) } else { 0 }
        }
    }
}

# 导出为CSV(-NoTypeInformation避免添加PowerShell类型头)
$output | Export-Csv -Path C:\Temp\Folderinfo.csv -NoTypeInformation

关键说明

  1. 覆盖所有文件夹:通过Get-ChildItem -Directory -Recurse获取子文件夹,再手动加入根目录,确保空文件夹也会被统计。
  2. 高效统计:一次性递归获取所有文件,通过Group-Object按文件夹分组,避免重复遍历文件系统,提升脚本运行效率。
  3. 多维度输出:同时输出文件夹路径、文件数量、字节总大小和MB单位大小(可根据需求调整为GB等其他单位)。
  4. 兼容空文件夹:判断文件夹是否有文件,无文件时统计值显示为0,避免报错。

解决你之前的问题

你之前遇到的“只能获取顶层文件夹大小”的问题,是因为没有遍历所有子文件夹并单独统计每个文件夹的文件总和。现在的脚本先拿到所有文件夹的完整列表,再将每个文件夹与对应的文件统计数据关联,实现了递归获取每个路径的大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:01:02