是否可以使用批处理文件将多个CSV文件[同一目录]合并为一个?如果是这样,我该怎么做?
我认为这适用于任何ASCII文件?
答案 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