批处理脚本:将多个文件夹中的多个文件合并为一个文件

批处理脚本:将多个文件夹中的多个文件合并为一个文件

我有大约 20 个文件夹,每个文件夹都有大约 100 个 csv 文件。我想将它们全部合并为一个文件。我该怎么做?我知道合并copy一个文件夹的文件的命令。如果我这样做,我会得到 20 个文件夹中的 20 个文件。要合并它们,我将如何遍历每个文件夹并执行?

我正在尝试编写如下批处理脚本:

FOR /D /R %G in ("*") DO (
cd %G 
COPY *.csv new.csv )

但是,它不能正常工作。有什么建议吗?

答案1

如果所有文件确实都是有效的 CSV,则修改最后一行以使用变量 %H 循环遍历当前文件夹中的文件,将副本更改为:

TYPE %H >>new.csv

应该可以工作(恐怕还没有经过全面测试)。

但是,更好的方法是使用 PowerShell,因为它具有处理 CSV 输入和输出的 cmdlet,因此它能够处理文件结构中的任何异常而不会破坏输出。

答案2

我让第一部分工作起来了,即将每个子文件夹中的所有 csv 文件合并为一个 csv 文件。所以,我有 20 个 csv 文件。错误是单个%。应该是%%G

 FOR /D /R %%G in ("*") DO (
  cd %%G 
  COPY *.csv new.csv )

相关内容