Windows批处理 - 将多个文本文件连接成一个

Spe*_*505 29 windows scripting batch-file

我需要创建一个脚本,将多个文本文件连接成一个.我知道它简单易用

type *.txt > merged.txt
Run Code Online (Sandbox Code Playgroud)

但要求是"将文件从同一天连接到文件day_YYYY-DD-MM.txt"我是linux用户,windows批处理对我来说很难.

编辑:它的Windows XP

Sha*_*han 38

Windows type命令的工作方式与UNIX类似cat

示例1:与文件名合并(这将合并file1.csv和file2.csv以创建concat.csv)

type file1.csv file2.csv > concat.csv
Run Code Online (Sandbox Code Playgroud)

示例2:合并具有模式的文件(这将合并所有具有csv扩展名的文件并创建concat.csv)

type  *.csv > concat.csv
Run Code Online (Sandbox Code Playgroud)

  • 不要对目标文件使用相同的扩展名。当我运行这个命令时,我只是等了几分钟,直到我注意到它陷入了无限循环,将目标文件添加到自身并创建一个不断增长的文件(当我注意到它在尝试合并 2MB 的文件时被卡住时,达到了 15GB)文件)。 (8认同)
  • 这是unix命令最直接的等效项,应该是可接受的答案 (3认同)
  • 这也是效率最低的方式,因为“type”将以 4 KiB 的块来完成其工作,从而使操作极其缓慢。 (2认同)

Lan*_*nce 27

最基本的是,批处理文件中的连接文件是使用'copy'完成的.

copy file1.txt + file2.txt + file3.txt concattedfile.txt
Run Code Online (Sandbox Code Playgroud)

  • 您还应该提到"/ b"(二进制)运算符.将它与文本文件一起使用也会将每个文件的BOM表头(例如UTF8 + BOM,UCS2 + BOM)复制在一起,并在以后产生大量复杂性...... (4认同)

Gho*_*ool 9

在 Win 7 中,导航到文本文件所在的目录。在命令提示符下使用:

copy *.txt combined.txt
Run Code Online (Sandbox Code Playgroud)

combined.txt新创建的文本文件的名称在哪里。


小智 8

将所有需要复制的文件放在一个单独的文件夹中,以方便将它们放在c盘中.

打开命令提示符 - 窗口>键入cmd>选择命令提示符.

您可以看到指向的默认目录 - 例如:C:[Folder_Name]>.使用"cd [Folder_Name]"命令将目录更改为指向要放置文件的文件夹.

指向目录后 - 键入'dir',显示文件夹中的所有文件,只是为了确保一切都在位.

现在输入:'copy*.txt [newfile_name] .txt'并按回车键.

完成!

单个文件中的所有文本都将复制到[newfile_name] .txt

  • 这似乎在结果文件的末尾添加了一个额外的0x1A字符,如果我从回溯旧的日子回忆起"控制Z",文件结束标记. (4认同)

小智 5

我们可以使用普通的CAT命令来合并文件。

D:> cat *.csv > 输出.csv

  • Windows 上没有 CAT。 (8认同)
  • 像Git这样的一些软件包附带了cat,也许他把它误认为是DOS命令。 (3认同)

小智 5

我重申了已经提出的其他一些观点,但包括第三个示例,当您跨文件夹拥有要连接的文件时,该示例会有所帮助。

示例 1(同一文件夹中的文件):

copy file1.txt+file2.txt+file3.txt file123.txt
Run Code Online (Sandbox Code Playgroud)

示例 2(同一文件夹中的文件):

type *.txt > combined.txt
Run Code Online (Sandbox Code Playgroud)

示例 3(文件存在于多个文件夹中,假设 newfileoutput.txt 不存在):

for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt
Run Code Online (Sandbox Code Playgroud)