使用批处理文件合并多个csv文件

时间:2014-08-31 20:47:38

标签: batch-file dos

是否可以使用批处理文件将多个CSV文件[同一目录]合并为一个?如果是这样,我该怎么做?

我认为这适用于任何ASCII文件?

3 个答案:

答案 0 :(得分:9)

copy *.csv merged.csv

copy file1+file2+… merged.csv

对于避免重复标题的更复杂的脚本,请参阅Batch Combine CSV Remove Header

答案 1 :(得分:1)

有时您想知道哪个行来自哪个文件。 如果您只是使用

复制* .csv merged.csv

你将一个接一个地粘贴文件,无法知道哪个行来自哪个文件。

解决方案涉及使用grep.exe实用程序。你可以从这样的地方得到它: http://gnuwin32.sourceforge.net/packages/grep.htm

获得它(并将其位置添加到PATH)后,转到csv文件所在的文件夹并在命令shell中运行:

grep -e ^ a * $ * .csv> t.txt

结果是所有文件都被添加到t.txt中,文件名附加在每行的开头,用文件的文本中的“:”分隔。

示例:

<强> file1.csv

此,线

,从

文件,1

<强> file2.csv

此,线

,从

文件,2

运行grep命令后,t.txt将具有:

file1.csv:此,线

file1.csv:是,从

file1.csv:文件,1

file2.csv:此,线

file2.csv:是,从

file2.csv:文件,2

更改t.txt .t.csv,然后在Excel中打开。 下一步是取第一列并将其拆分为两列,使用“:”作为分隔符(Data - &gt; text to columns - &gt; delimited并选择“other”并在字段中输入“:”。)

小心!在A列和B列之间添加一个新列,以便在将A列拆分为2列时,不会覆盖B列的内容。

请注意,如果第一个csv字段中的文本包含“:”,则由于列A将拆分为多于2列,因此这将更加困难。

此外,关于重复标题的评论也在这里。

答案 2 :(得分:0)

对于TEXT文件

DEL c:\CombineFiles\CombinedFiles.txt

@echo off>CombinedFiles.txt
for /r  %%a in (.) do copy/b CombinedFiles.txt+"%%a\*.txt" c:\CombineFiles\CombinedFiles.txt

对于CSV文件

DEL c:\CombineFiles\CombinedFiles.csv

@echo off>CombinedFiles.csv
for /r  %%a in (.) do copy/b CombinedFiles.csv+"%%a\*.csv" c:\CombineFiles\CombinedFiles.csv

从CSV到TXT文件

DEL c:\CombineFiles\CombinedFiles.txt

@echo off>CombinedFiles.csv
for /r  %%a in (.) do copy/b CombinedFiles.csv+"%%a\*.csv" c:\CombineFiles\CombinedFiles.txt