PowerShell如何拆分CSV含列名的单列并导出指定格式CSV文件
原脚本错误说明
原脚本无法得到预期结果,核心问题有3个:
- 变量引用错误:需要拆分的是输入CSV的
Name列,原代码误写为不存在的Codes列,后续调用的$codes变量从未被正确赋值 - 对象结构错误:处理每条输入记录时,连续输出了10个独立的自定义对象,没有把所有字段整合到同一个对象中,最终导出的CSV行列结构完全错乱
- 字段映射错误:拆分后的值和目标字段的对应关系写反,也没有清理拆分后字符串前后的多余空格
正确可运行的PowerShell脚本
Import-Csv -Path "D:\sample.csv" | ForEach-Object { # 按逗号拆分Name列,逐段清理前后多余空格 $splitNameParts = $_.Name -split ',' | ForEach-Object { $_.Trim() } # 按目标列要求组装单条记录对象 [pscustomobject]@{ Application = $splitNameParts[0] Entity = $splitNameParts[1] Project = $splitNameParts[2] Years = $splitNameParts[3] Version = $splitNameParts[4] Currency = $splitNameParts[5] Scenario = $splitNameParts[6] Account = $splitNameParts[7] Period = $_.Period Data = $_.Data } } | Export-Csv -Path "D:\output.csv" -Encoding UTF8 -NoTypeInformation
使用说明
- 脚本运行后会直接在D盘根目录生成符合要求的
output.csv - 导出参数
-NoTypeInformation会去掉CSV默认生成的多余类型注释行,-Encoding UTF8避免特殊字符乱码 - 输出列顺序完全匹配要求的Application、Entity、Project、Years、Version、Currency、Scenario、Account、Period、Data顺序,无需额外调整
内容的提问来源于stack exchange,提问作者Intern99
相关产品推荐
相关产品推荐

