1

У меня есть файл CSV 100 строк, с 5 значениями в строке. Я ищу способ экспортировать каждую строку в свой собственный CSV-файл, добавив заголовок 2 строки для каждой. Я использовал команду split, созданную в других местах, для создания нескольких файлов, но не нашел способа добавить заголовок. Также, если возможно, можно ли перетянуть одну из переменных в имя файла? Спасибо.

Пример ниже.

Orig

Jack,7,blue,001   
Jane,6,red,002   
Mike,4,orange,003

результат

List001.csv   
first,number,favorite   
Name,age,color   
Jack,7,blue   

...

List002.csv   
first,number,favorite   
Name,age,color   
Jane,6,red   

Это файл, который я использую:

@echo off
setLocal EnableDelayedExpansion

set limit=1
set file=userlist.csv
set lineCounter=1
set filenameCounter=101

set name=Usertable
set extension=csv
for %%a in (%file%) do (
    set "name=%%~na"
    set "extension=%%~xa"
)

for /f "tokens=*" %%a in (%file%) do (
    set splitFile=%name%%filenameCounter%%extension%
    if %lineCounter% gtr %limit% (
        set /a filenameCounter=%filenameCounter% + 1
        set lineCounter=1
        echo Created %splitFile%.
    )
    echo %%a>> %splitFile%

    set /a lineCounter=%lineCounter% + 1
)

1 ответ1

1

Я ищу способ экспортировать каждую строку в свой собственный CSV-файл

добавив заголовок в 2 строки к каждому.

Ваш пакетный файл слишком сложен. Нет необходимости разбивать имя файла или использовать переменную счетчика.

Используйте следующий пакетный файл (example.cmd):

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-4 delims=," %%i in ('type userlist.csv') do (
  echo first,number,favorite>>List%%l.csv
  echo Name,age,color>>List%%l.csv
  echo %%i,%%j,%%k>>List%%l.csv
  )
endlocal

Пример использования:

F:\test>type userlist.csv
Jack,7,blue,001
Jane,6,red,002
Mike,4,orange,003

F:\test>example

F:\test>type List001.csv
first,number,favorite
Name,age,color
Jack,7,blue

F:\test>type List002.csv
first,number,favorite
Name,age,color
Jane,6,red

F:\test>type List003.csv
first,number,favorite
Name,age,color
Mike,4,orange

F:\test>

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .