通过 windows batchscript 在 csv 文件中添加字符串

Add string in csv file via windows batchscript

我有一个竖线分隔的 csv 文件,如下所示

METADATA|WorkTerms|PeriodOfServiceId
MERGER|WorkTerms|WT10127
METADATA|Assignment|WorkTermsAssignmentId|PeriodOfServiceId
MERGER|Assignment|WT10127|WR10127

我想要如下输出

METADATA|WorkTerms|PeriodOfServiceId(SourceSystemId)
MERGER|WorkTerms|WT10127
METADATA|Assignment|WorkTermsAssignmentId(SourceSystemId)|PeriodOfServiceId(SourceSystemId)
MERGER|Assignment|WT10127|WR10127

我想在特定位置添加 (SourceSystemId),可以通过 windows 批处理脚本完成吗?

任何线索、链接建议都会很有帮助。

谢谢,

希瓦姆

首先,仅将第 4 行中的 myfile.csv 的名称替换为 您的 csv 文件的名称,并且第三行中的文件路径。如果要替换的字符串是唯一的字符串,请不要触及脚本中的任何其他内容。将脚本放在与文件相同的目录中:

@echo off
setlocal enabledelayedexpansion
set "mypath=C:\PATH\TO\CSV"
set "mycsv=myfile.csv"
move "%mypath%\%mycsv%" "%mypath%\oldmyfile.txt"

for /f "delims=" %%i in ('type "%mypath%\oldfile.txt"') do (
    set "str=%%i"
    set "edit=!str:PeriodOfServiceId=PeriodOfServiceId(SourceSystemId)!"
    set "edit=!edit:WorkTermsAssignmentId=WorkTermsAssignmentId(SourceSystemId)!"
    echo !edit! >> "%mypath%\%mycsv%"
)
del "%mypath%\oldfile.txt" /Q

这是脚本的作用。将原文件重命名为oldfile.txt,键入每一行并使其成为一个变量,对某些字段进行替换,但与搜索字符串不匹配的字段将保留原样,然后将这些行回显到包含替换的原始文件名。