Добавить строку в CSV-файл с помощью Windows Batchscript - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть 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?

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

Спасибо

Шивы

1 Ответ

0 голосов
/ 13 сентября 2018

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

...