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

如何将PowerShell文件夹大小统计脚本结果导出为CSV?

嘿,我完全懂你的感受——本来以为导出个CSV是小事,结果折腾半天,确实闹心!咱们把原脚本调整一下,改成输出结构化数据,就能轻松导出成易读的CSV了,一步步来:

首先,原脚本的问题在于它输出的是拼接好的字符串,而CSV需要的是结构化的键值对数据。所以我们得先让脚本生成带属性的对象,再导出。

修改后的完整脚本

# 设定要扫描的目标路径
$targetDir = "C:\Users\user.name\Desktop"

# 扫描文件夹、计算大小,并生成结构化数据对象
$folderSizeResults = Get-ChildItem $targetDir -Directory | Sort-Object Name | ForEach-Object {
    # 递归获取所有文件并计算总大小
    $totalSize = Get-ChildItem $_.FullName -Recurse -Force -File | Measure-Object -Property Length -Sum
    # 创建自定义对象,包含文件夹路径和转换为MB的大小(保留两位小数)
    [PSCustomObject]@{
        "文件夹路径" = $_.FullName
        "大小(MB)" = [math]::Round(($totalSize.Sum / 1MB), 2)
    }
}

# 导出到CSV文件(路径可以自己修改)
$folderSizeResults | Export-Csv -Path "C:\Users\user.name\Desktop\文件夹大小统计.csv" -NoTypeInformation -Encoding UTF8

关键调整说明

  • 用-Directory替代了原来的Where-Object {$_.PSIsContainer -eq $true},PowerShell 3.0+支持这种更简洁高效的写法。
  • 用-File替代Where-Object {$_.PSIsContainer -eq $false},同样是更现代、易读的写法。
  • 生成[PSCustomObject]是核心!每个文件夹对应一个带“文件夹路径”和“大小(MB)”属性的对象,这样导出CSV时会自动生成清晰的表头,数据规整有序。
  • [math]::Round(...,2)和原脚本的{0:N2}效果一致,确保大小保留两位小数,可读性更强。
  • Export-Csv的参数优化:-NoTypeInformation会去掉CSV开头多余的类型注释,让文件更干净;-Encoding UTF8能避免中文路径或名称出现乱码问题。

小提示

  • 导出完成后,直接用Excel打开CSV就能看到规整的表格格式;用文本编辑器打开的话,也是逗号分隔的清晰数据。
  • 如果遇到空文件夹,脚本会自动显示0MB,不会出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:06:49