Batch file 如何合并多组文本文件

Batch file 如何合并多组文本文件,batch-file,merge,Batch File,Merge,我有一个包含aprox的目录。1500个包含数据的文本文件。 我想把这些数据合并成几个集合,因为每个测量数据总是有24个集合。如machine1-00.csv machine1-01.csv machine1-03.csv等和machine2-00.csv machine2-01.csv machine2-03.csv。我想将machine1*.csv中的所有数据合并到machine1.csv中,并将machine2*.csv中的所有数据合并到machine2.csv中。命令copy/b mac

我有一个包含aprox的目录。1500个包含数据的文本文件。
我想把这些数据合并成几个集合,因为每个测量数据总是有24个集合。如machine1-00.csv machine1-01.csv machine1-03.csv等和machine2-00.csv machine2-01.csv machine2-03.csv。我想将machine1*.csv中的所有数据合并到machine1.csv中,并将machine2*.csv中的所有数据合并到machine2.csv中。命令
copy/b machine1*.csv machine1.csv/y对于一个集合很好,但是如何处理1500个集合,每个集合有24个文件?

我认为最简单的解决方案是创建一个在1到24范围内迭代的小Windows批处理脚本。对于该范围内的每个值,脚本调用复制指令的相应调用

以下“merge.bat”文件应执行此任务:

@echo off
FOR /L %%i IN (1, 1, 24) DO (

copy /b machine%%i*.csv machine%%i.csv /y

)

只需在csv文件位置创建一个名为“merge.bat”的文本文件(使用记事本),其中包含此内容,然后运行merge.bat即可。

使用
键入machine1*.csv
并使用
将输出重定向到
newfile.csv
。大概是这样的:

@echo off
setlocal

for /L %%I in (1,1,63) do (
    >merged%%I.csv type machine%%I*.csv
    ren merged%%I.csv machine%%I.csv
)
将63改为最大的数字。您可以编写检测最大数量的脚本,但这更容易


如果您的CSV文件没有以新行结尾,则需要更多注意此问题,因为
copy/b
type
都不会在附加的文件之间追加新行。

我刚刚编辑了一个错误:copy/b machine%%I*.CSV machine%%G.CSV/y--%%G必须用%%iThanks Eliasw替换。我在提出问题时犯了一个错误。这导致了“machinex”是文件名集的公共部分的假设。遗憾的是,事实并非如此。一套由24小时采集的测量数据(如液位、体积、压力等)组成,因此液位的文件名为Levelxx.csv,其中xx的范围为00-23,体积和压力的范围相同。在Level的示例中,我希望将24小时生成的Level的csv文件合并到一个类似于Level-day.csv的文件中,但我希望能够对所有不同类型的数据文件进行合并