我有15个CSV文件,我必须合并成一个。我试图从Windows命令行复制,但这将它加入到一个单一的列。我正在寻找的是,每个CSV是一个列内的合并文件:
D1.csv D2.csv D3.csv
11 21 31
12 22 32
13 23 33
然后道:
Copy *.csv combined.csv
结果:
11
12
13
21
22
23
31
32
33
预期结果:
11 21 31
12 22 32
13 23 33
3条答案
按热度按时间2w2cym1i1#
代码的第一部分设置要使用的目录和输出文件名。改得适合自己
接下来,从环境中删除启动
#
的所有变量。然后在source目录中找到所有的
.csv
文件,当然,你可以修改文件掩码*
来适应。找到每个文件名后,启动一个计数器。我使用了一个大的数字,这样数据将到达变量
#data10001
,等等。读取
%%e
中当前文件的每一行。由于delims=
和usebackq
是必需的,因此需要整行内容,因为文件名用引号括起来。对于每一行,通过首先将当前行号放置在x1M7N1x中以利用x1M8N1x的解析方法,来转移行号并将行内容附加到#datathelinenumber。
最后,从文件中读取的所有数据都将存放在
#data10001
、#data10002
中,因此使用set
来按顺序列出数据,并选择set
输出在=
和空格之后。请注意,这要求所有文件都具有相同的行数,并且所有行都包含一些数据。
列的顺序与
dir
命令列出的文件的顺序相同。91zkwejq2#
这个问题的正确解决方案很大程度上取决于结果文件的 * 总大小 * 和 * 最长行的大小 *。如果文件总大小很小,那么Magoo's solution应该能很好地工作。但是,如果文件很大,那么这样的解决方案就会很慢...
如果结果文件很大,则此解决方案应该更快:
但是,如果最长线的大小大于1023,则无法使用此解决方案
tag5nh1u3#
我不是100%确定你的全部要求是什么,有标题或没有,但这里有一些想法。
它会将文件夹根目录中的所有
.csv
文件合并到combined.csv
或者删除合并文件中所有其他文件的头: