用于连接多个文件的命令行或批处理cmd


99

我在一个目录中有50个文本文件。

是否有Windows命令行方法将这些文件串联为单个文件?

我正在使用Windows Vista

我不想键入所有文件的名称。


您正在使用哪个版本的DOS?:)来吧,给我们一些信息,什么文件类型...您显然正在寻找一种合并这些文件的方法。

该帖子被编辑
幻影

2
基于Windows NT的OS(NT,2000,以及XP以来的所有产品)中的DOS确实不是DOS,它是一个名为“ cmd.exe”的命令外壳。删除了DOS标签以反映这一点。
quack quixote 2010年

对此感到抱歉,我真的不知道。我当时想作为DOS
Mirage,2010年

1
值得庆幸的是,DOS的最后痕迹是Windows ME消亡了。:),但不用担心-大多数人仍然将Windows命令行称为“ DOS”,所以这不是错误,只是不准确。由于有时仍然使用真正的DOS,因此我将DOS标记清除为真正的DOS问题。
quack quixote

Answers:


128

我不想键入所有文件的名称。

这很容易避免。在此文件夹中打开命令提示符,然后键入以下命令:

copy /b *.txt newfile.txt

Enter

现在,您将按日期升序将此文件夹中的所有文本文件合并到一个名为newfile.txt的文件中。

我的最终目的是将每个文本文件的内容存储在Excel工作表的单独列中。

这是一个可以帮助您实现“最终目标”的教程:

在一个工作表的一个文件夹中合并所有CSV或TXT文件


是否有可能everyfile后插入新行字符
幻影

不使用这种方法。
quack quixote

还有其他选择。我的最终目的是将每个文本文件的内容存储在Excel工作表的单独列中。创意
Mirage 2010年

@Mirage-根据您的评论更新了我的答案。

但是问题是我如何才能在每个文本文件中添加结束符。当前,某些文件文本在合并文件中位于相同的段落中,因此excel将其放在一列中。或者,如果我可以先在所有文件后附加一些结束符,然后再执行合并操作
Mirage,2010年

38

要在每个串联文件的末尾添加换行符,请使用type代替copy,如下所示:

type *.txt > newfile.txt

5
警告:使用* .txt> newfile.txt时,文本会重复。
Malganis

2
删除.txtnewfile和Bam!你有它。
fa wildchild

对于串联日志文件或您将要解析的其他内容,这是一个很棒的答案。特别是您type x.log.* > merged.log无需批处理文件就可以执行的操作。新行很容易处理。
丹尼尔·查普曼

1
哇,type自DOS 3.3起已经走了很长一段路。我不知道您可以使用文件掩码。什么时候发生的?
2016年

32

假设您正在讨论附加文本文件,copy可以使用以下命令将它们附加在一起:

copy file1+file2+file3 targetfile

如果文件很多,则可以一次附加一个文件来循环。

对于二进制文件,添加' /b'选项:

copy /b file1+file2+file3 targetfile

假设您知道所使用的二进制文件可以背对背附加;如果没有,您将获得大量无用的数据。


5
如果您需要以特定顺序连接文件,这将非常有用。
kapex



3

以下.bat文件会将所有* .for文件(名为XIT.for的文件除外)附加到名为MASTER.for的空白文件中

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


2
上面的内容略有不同:如果要确保按字母顺序串联文件,则应使用:FOR / F %% G IN('dir / b / o * .for')如果不是“ %% G”,请执行以下操作: ==“ XIT.for”复制/ A MASTER.for +“ %% G” &&回声。>> MASTER.for
Guido Domenici

我喜欢这个。我今天需要进行的另一项调整是将文件名标题打印到文件中以分隔输入文件。 for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
柯蒂斯·普莱斯

我知道使用bash shell可能更有意义!
柯蒂斯·普莱斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.