WINDOWS 批处理命COPY 合并多个文件的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WINDOWS 批处理命COPY 合并多个文件的问题相关的知识,希望对你有一定的参考价值。

我的命令是这样的: COPY D:\新建文件夹\文本文件夹\*.txt D:\新建文件夹\目标文件夹\BK-191401000000-.txt 在这个命令中 我合并多个文件. 但是,合并之后,原来不同文件的内容没有分行.我想要达到这样的效果: 来自不同原始文件的内容, 在新生成的文件中,是分行显示的 请高手解答

参考技术A 你不要用copy这个命令来合并,可以用其他方法,你试试这个:===================================@echo offfor %%i in (D:\新建文件夹\文本文件夹\*.txt) do (for /f "delims=" %%j in ('type %%i') do echo %%j>>D:\新建文件夹\目标文件夹\BK-191401000000-.txt)echo 操作完成pause

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

【中文标题】Windows 批处理 - 将多个文本文件连接成一个【英文标题】:Windows batch - concatenate multiple text files into one 【发布时间】:2015-08-08 14:11:29 【问题描述】:

我需要创建一个脚本,将多个文本文件合并为一个。 我知道它很容易使用

type *.txt > merged.txt

但要求是“将同一天的文件连接到文件 day_YYYY-DD-MM.txt”我是 Linux 用户,Windows 批处理对我来说是地狱。它是 Windows XP。

【问题讨论】:

您应该告诉我们是否需要在“真实”批处理文件中完成,或者是否可以使用 powershell / Windows 脚本主机。对于初学者,您应该提及需要支持哪个 Windows 版本(最低/最高) 它的 windows XP 所以没有 powershell 您将需要一个可爱的 FOR 命令来执行此操作:***.com/questions/9234207/…。就个人而言,我不会批量处理这样的事情。即使你可以让它工作,你可以使用的对象类型也是有限的——Powershell 是要走的路。 您可以在 Windows XP 上安装 Powershell 2.0。见support.microsoft.com/en-us/kb/968929 我没有推荐 cygwin,因为我认为你想要一个最小的模糊解决方案。您的问题标题表明您需要基于 Windows 机制的解决方案。 【参考方案1】:

在最基本的情况下,从批处理文件中连接文件是通过“复制”完成的。

copy file1.txt + file2.txt + file3.txt concattedfile.txt

【讨论】:

我尝试复制 *.xyz all.bin 但生成的文件 all.bin 仅包含该目录中 xyz 文件的子集。我不明白为什么它没有包括所有这些。加号语法是必要的吗?如果是这样的话,对于大量文件来说是不方便的。 我刚刚根据您的规范创建了一个示例,它的行为符合预期。我创建了“1.xyz”、“2.xyz”和“3.xyz”。然后运行“copy *.xyz all.bin”,生成的“all.bin”包含所有 3 个文件的内容。所以我不知道为什么它不适合你。 感谢您对此进行测试。我将不得不进一步尝试找出原因! 您还应该提到“/b”(二进制)运算符。将它与文本文件一起使用还会将每个文件的 BOM 标头(例如 UTF8+BOM、UCS2+BOM)复制在一起,并在以后产生大量复杂性...... 这在大文件上比接受的答案要快得多【参考方案2】:

试试这个:

@echo off
set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%

set /p temp= "Enter the name of text file: "
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt

此代码要求您在“day_”之后设置文件名,您可以在其中输入日期。 如果您想将文件命名为实际日期,您可以这样做:

FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt

【讨论】:

您的回答结果取决于系统的本地设置。【参考方案3】:

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

D:> cat *.csv > outputs.csv

【讨论】:

Windows 上没有 CAT。 有些包比如Git自带cat,可能他把它误认为是DOS命令了。 微软肯定发布了 cat.exe -> 它包含在 nt4 资源工具包中 - 请参阅 news.microsoft.com/1996/10/29/…【参考方案4】:

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

打开命令提示符 - windows>输入 cmd>选择命令提示符。

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

指向目录后 - 键入“dir”,它显示文件夹中存在的所有文件,只是为了确保一切都在适当的位置。

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

完成!

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

【讨论】:

这似乎在结果文件的末尾附加了一个额外的 0x1A 字符,如果我从过去的糟糕日子回忆起来,它是“控制 Z”,文件结束标记. 不要忘记删除文件末尾多余的字符 0x1A【参考方案5】:

cat "输入文件" > "输出文件"

这适用于 PowerShell,它是当前 Windows 版本中的 Windows 首选 shell,因此它可以工作。它也是上述答案的唯一版本,可用于处理“类型”或“复制”失败的大文件。

【讨论】:

OP 编辑​​了他们的帖子:Its Windows XP。 Win XP 也有解决方案吗? 使用资源工具包 nt 4.0 - 有一个 cat.exe(仍在 win10 上工作)【参考方案6】:

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

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

type file1.csv file2.csv > concat.csv

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

使用星号(*) 连接所有文件时。请不要对目标文件使用相同的扩展名(例如.csv)。模式应该有所不同,否则目标文件也会在连接中考虑

type  *.csv > concat_csv.txt

【讨论】:

这是最直接的unix命令等价物,这应该是公认的答案 这也是最低效的方式,因为“type”将在 4 KiB 块中完成它的工作,这使得操作非常缓慢。 不要对目标文件使用相同的扩展名。当我运行这个命令时,我只等了几分钟,直到我注意到它陷入了无限循环,将目标文件添加到自身并创建了一个不断增长的文件(当我注意到它在尝试合并 2MB 时卡住时达到了 15GB文件)。 工作得很好,谢谢。注意:比 LINUX 慢得多...【参考方案7】:

你可以使用 type:

type"C:\<Directory containing files>\*.txt"> merged.txt

目录中的所有文件都将附加到文件merged.txt

【讨论】:

【参考方案8】:

我重申已经提出的其他一些观点,但包括第 3 个示例,当您在想要连接的文件夹中有文件时,它会有所帮助。

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

copy file1.txt+file2.txt+file3.txt file123.txt

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

type *.txt > combined.txt

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

for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt

【讨论】:

【参考方案9】:

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

copy *.txt combined.txt

其中combined.txt 是新创建的文本文件的名称。

【讨论】:

以上是关于WINDOWS 批处理命COPY 合并多个文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何把多个CSV文件的数据变成一个EXCEL表格

怎么在同一个文件夹下的多个EXCEL文件合并到一个EXCEL里?

win系统cmd的copy命令多个文件批量与一个文件合并,按规律合成怎么做

DOS命令求助,如何合并多个RTF文件?

怎样将多个txt文档快速合并成一个文档?

python学习-windows下使用python27将合并多个xlsx文件