使用PowerShell替换CSV文件中的特定引号(替代Batch方案)
需求与PowerShell解决方案
原始文件内容
"<Person> <Name> ""Test"" </Name> <Surname>""Test1""</Surname> </Person> <Person> <Name>""TestA""</Name> <Surname>""""</Surname> </Person>"
替换需求
- 将文件中的
""""(四个双引号)替换为""(两个双引号) - 将文件中的
""(两个双引号)替换为"(单个双引号) - 保留原文件的空格和XML结构,规避Batch脚本的字符长度限制及误删内容问题
PowerShell实现代码
# 读取目标CSV文件的完整内容 $content = Get-Content -Path "你的输入文件路径.csv" -Raw # 优先替换四个双引号为两个双引号 $content = $content -replace '""""', '""' # 再替换剩余的两个双引号为单个双引号 $content = $content -replace '""', '"' # 移除原始文件首尾包裹的多余双引号(匹配你的输入格式) $content = $content.Trim('"') # 将处理后的内容写入输出文件 $content | Set-Content -Path "你的输出文件路径.csv" -Encoding UTF8
代码说明
- 使用
-Raw参数一次性读取整个文件,避免逐行处理破坏XML结构 - 替换顺序不可颠倒:必须先处理四个双引号,否则会错误地将其拆分为两组双引号替换成单个引号
Trim('"')用于清除原始内容首尾的包裹引号,适配你的输入格式- 指定
-Encoding UTF8确保输出文件编码无乱码
预期输出结果
<Person> <Name> "Test" </Name> <Surname>"Test1"</Surname> </Person> <Person> <Name>"TestA"</Name> <Surname>""</Surname> </Person>
内容的提问来源于stack exchange,提问作者pape
相关产品推荐
相关产品推荐

