Добавить строку в CSV-файл с помощью 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 Batch?

Любые лиды, ссылки предложения будут действительно полезны.

Спасибо,

Шивам

1 ответ

Решение

Во-первых, заменить имя myfile.csv только в 4-й строке, с именем вашего csv-файла и te-путем к файлу в 3-й строке. Если строки, которые вы хотите заменить, являются единственными строками, больше ничего не трогайте в сценарии. поместите скрипт в тот же каталог, что и ваши файлы:

@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, вводит каждую строку и делает ее переменной, выполняет замену определенных полей, но поля, которые не соответствуют строке поиска, останутся в такте, после чего будут выведены строки в исходный файл. имя, включая замены.

Другие вопросы по тегам