![批处理脚本:将多个文件夹中的多个文件合并为一个文件](https://linux22.com/image/1710161/%E6%89%B9%E5%A4%84%E7%90%86%E8%84%9A%E6%9C%AC%EF%BC%9A%E5%B0%86%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%88%E5%B9%B6%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6.png)
我有大约 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 )