使用批处理命令将一个 csv 文件导出为多个 csv 文件

使用批处理命令将一个 csv 文件导出为多个 csv 文件

我有一个 100 行的 csv 文件,每行有 5 个值。我正在寻找一种方法将每行导出到自己的 csv 文件中,并为每行添加 2 行标题。我使用其他地方看到的 split 命令创建了多个文件,但没有找到附加标题的方法。此外,如果可能的话,可以将其中一个变量拉到文件名中吗?谢谢。

下面的例子。

原件

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

我正在寻找一种方法将每一行导出到其自己的 csv 文件

为每个添加两行标题。

您的批处理文件过于复杂。无需拆分文件名或使用计数器变量。

使用以下批处理文件(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>

进一步阅读

相关内容