我有一个 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>
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
- 类型- 显示一个或多个文本文件的内容。