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