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

PowerShell合并CSV文件时行尾符与引号异常问题咨询

PowerShell合并CSV异常问题解决方案

你使用的原命令存在两个配置缺失,对应修改方案如下:

问题根因说明

  1. 引号异常:原始CSV使用|作为字段分隔符,但Import-Csv、Export-Csv默认分隔符为逗号,字段解析错误导致引号转义异常。
  2. 行尾为CRLF:Windows环境下PowerShell原生Export-Csv默认输出行尾符为CRLF,低版本PowerShell无内置参数直接修改。

适配不同PowerShell版本的解决方案

方案1:PowerShell 7+ 版本(推荐)

PowerShell 7及以上版本的Export-Csv内置-NewLine参数可直接指定行尾符,修改后命令如下:

# 自动创建输出目录,避免目录不存在报错
New-Item -ItemType Directory -Path .\merged -Force | Out-Null

Get-ChildItem -Filter *.csv | 
    Select-Object -ExpandProperty FullName | 
    Import-Csv -Delimiter '|' | 
    Export-Csv -Path .\merged\merged.csv -Delimiter '|' -NoTypeInformation -Append -NewLine "`n"

方案2:Windows PowerShell 5.1 版本

低版本PowerShell无-NewLine参数,需手动处理换行符后写入文件,命令如下:

# 自动创建输出目录,避免目录不存在报错
New-Item -ItemType Directory -Path .\merged -Force | Out-Null

# 读取并转换CSV内容
$csvContent = Get-ChildItem -Filter *.csv | 
    Select-Object -ExpandProperty FullName | 
    Import-Csv -Delimiter '|' | 
    ConvertTo-Csv -Delimiter '|' -NoTypeInformation

# 替换所有CRLF为LF
$csvContent = $csvContent -join "`n" -replace "`r`n", "`n"

# 写入文件,可根据原始CSV编码调整Encoding参数,例如[System.Text.Encoding]::GetEncoding('gb2312')
[System.IO.File]::WriteAllText('.\merged\merged.csv', $csvContent + "`n", [System.Text.Encoding]::UTF8)

关键修改点说明

  • 给Import-Csv、Export-Csv/ConvertTo-Csv都添加-Delimiter '|'参数,明确匹配原始CSV的竖线分隔符,解决引号转义异常问题。
  • PowerShell 7+ 直接通过-NewLine "n"`指定行尾符为LF;低版本通过字符串替换+ .NET文件写入方法控制行尾符格式,避免默认输出CRLF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:05