заменить строку в CSV-файле, используя командный файл - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть CSV-файл с 18 полями.Мне нужно скопировать файл в текстовый файл, удалить первые четыре строки, заменить данные в поле № 8 и сохранить файл с новым именем.
Данные в поле № 8 являются целыми числами (например,1, 2, 3 и т. Д.).Каждое целое число необходимо заменить отдельным значением (например, мне нужно заменить 1 на 1005 и 3 на 1008).Я пытаюсь изменить / исправить следующий командный файл:

@echo off
More +4 datatest.csv > datacopy.txt
( FOR /f "tokens=8 delims=," %%h in (datacopy.txt) do (
    if "%%h"=="3" (echo 1008) else ( 
      echo %%a %%b %%c`  echo %%a %%b %%c
    ) 
  )
)>paygoinvoice.txt
@echo on

1 Ответ

0 голосов
/ 24 декабря 2018
  • Если выбран только один токен, вы получите только один столбец (%% h)
  • , непосредственно разбирая команду more, временный файл не требуется.
  • в зависимости от того, сколько целых чисел заменить, вы можете использовать псевдомассив с int в качестве индекса / указателя.
  • вы можете либо получить все столбцы отдельно (tokens=1-18, %%A..%%R), либо собрать остальные* в одном для переменной.

@echo off & Setlocal EnableDelayedExpansion
( FOR /f "tokens=1-8* delims=," %%A in ('More +4 datatest.csv') do (
    Set "H=%%H"
    if "%%H"=="1" Set "H=1005"
    if "%%H"=="3" Set "H=1008"
    echo %%A,%%B,%%C,...,!H!,%%I
  )
)>paygoinvoice.txt
@echo on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...