如何使用COPY命令向文件追加内容

22

我正在运行Windows 7 终极版 x64,但我的经验可以追溯到DOS 3.0。

自从像DOS 3.1这样的版本,你就可以使用COPY命令将一个文件附加到另一个文件中:

COPY FILE1+FILE2=FILE1

不再需要临时文件FILE3。

这是一个非常方便的命令,因为每当你添加新程序时,通常需要更新你的CONFIG.SYSAUTOEXEC.BAT文件。

以前正确排序非常重要,否则你就会得到一个空的FILE1。

但今天当我尝试这样做时,它没有改变FILE1,并且当我颠倒顺序时,它(可以理解地)使FILE1成为FILE2的副本。

有人知道它是否已被另一种方法替代,以及这个更改发生的时间吗?

编辑:

我做了更多的测试,奇怪的是即使上面的代码不起作用,你仍然可以从控制台复制并将其附加到现有文件中,如下所示:

copy file1+con=file1
Type some text to append to file1
^Z ([CTRL]+Z the End Of File character)

我想知道我的Windows版本是否出了问题。有人能复制我的发现吗?

编辑:

它适用于95/98/ME/2000/XP/XP模式/7专业x64/8 x64。因此,我想这不是 7 Ultimate x64 的问题,而是我的计算机的问题。

*叹气*

编辑:

最后一次编辑,我保证。:)

这不是我的机器的问题,而是File1的问题。显然,当我首次将File2附加到它时,[CTRL]+Z(EOF字符)从未被覆盖,导致文件看起来像这样:

Original Data
Original Data
[EOF]
Appended Data
Appended Data
Appended Data

你可以通过以下实验在命令提示符下自行复制此操作。(其中^Z是字符[CTRL]+Z)

在命令提示符下键入:

copy con file1
File One
^Z^Z

copy con file2
File Two
^Z

copy con file3
File Three
^Z

copy file1+file2=file1

copy file2+file3=file2

TYPE file1
TYPE file2

你将看到:

file1

File One

file2

File Two
File Three

你可以使用type file2 >> file1或几乎任何其他连接文件的方法,当您键入file1时,它仍将只包含File One。但是,如果您使用FIND "searchterm" file来解析该文件,则会显示实际情况。在这种情况下,请输入:

FIND " " file1

你将获得以下奖励:

---------- FILE1
File One
→File Two
12个回答

37

Windows 8 x86:

微软 Windows 版本 6.2.9200
(c) 2012 微软公司,保留所有权利。
C:\Users\Nikos>echo foo>file1
C:\Users\Nikos>echo bar>file2
C:\Users\Nikos>copy /b file1 + file2 file1 file1 file2 1 个文件被复制。
C:\Users\Nikos>type file1 foo bar

当复制foo+bar=foo时,你得到什么? - nikos1993pl
1
我获取了 foo 的原始版本。 - James K
我已经验证了copy file1+file2=file1在Windows 7 Professional x64上可以工作,所以我相信这可能是我的机器的问题。 - James K
谢谢你帮我解决了这个问题。 :) - James K
有没有办法使用命令再次检索file2和file1? - swapnil gandhi
要检索文件,您需要拥有一些分割工具并知道其中文件的长度。 - Lassi Kinnunen

7

那么type file2 >> file1是怎样的呢?


1
@JamesK,你的问题中从未提到“二进制”。那么你究竟想做什么? - Eitan T
@EitanT - 我只是想知道,这个功能是否从Windows中消失了,因为它比任何其他内置的文件连接方法(二进制或文本)更有效。 - James K
实际上,那也不起作用。问题在于文件末尾有两个EOF字符,因此当使用几乎任何方法进行追加时,一个EOF字符会留下,并且追加的文本会在其后面。 - James K

6

回答:“如何使用COPY命令追加文件?”

警告:如果您有要通过COPY命令组合的文件列表,虽然简单但可能会破坏您的文件。

危险的方法

copy /b one + two + three -- 将“two”和“three”的内容追加到文件“one”中。因此,原始的“one”现在具有3个文件的内容,并以正确的顺序排列。如果在复制过程中出现问题,您将无法恢复原始的“one”,因为它将是损坏的,您的数据基本上就会丢失。几乎没有理由使用这种方式。

安全的方法

copy /b one + two new_filename -- 将2个文件(当然还可以列出更多)组合成一个包含“one”和“two”按正确顺序排列的新文件new_filename,并保留原始文件不变。


对我来说,这是迄今为止最好的解决方案。我想将一个文本文件附加到另一个文本文件上。这是最简单的方法:将 new_file 复制到 destin_file 中,以将 new_file 附加到 destin_file 上。 - Doug Null
@DougNull 实际上那样做是行不通的。如果你只有两个文件,像这样:copy File_1 File2,那么会发生的是复制不会进行追加,它会创建一个名为File2的File1的副本。如果File2已经存在,它将被覆盖。我更新了我的答案以适应这种情况。 - Emil

2
@echo off

cls

type "file2.txt" >> "file1.txt"

exit

2
确保您从未尝试过复制的新文件开始。
我刚发现在我的(XP sp3)copy a+b a不带/b会将1ASUB)附加到文件末尾,这会使其后面的任何内容在type输出中消失(但more将显示它)。Copy /b a+b a可以解决该问题。

是的,我能够确认它在XP上可以工作。不过,至少在XP模式下可以。 - James K

1

你尝试过 copy /b file1 + file2 file1 吗?


是的。我尝试了自己能想到的每个迭代和我遇到的每一个。 - James K

1

copy /b input1 + input2 output
del input1
ren output input1
这样可以吗? :P


1
当然,即使是 copy /b file1 + file2 file3 move file3 file1 也可以工作。我不是试图替换功能,而是试图发现它是否已从COPY命令中删除(以及何时),或者我的计算机出了问题。 - James K

1
C:\Users\Nikos>type file1 foo bar C:\Users\Nikos>copy file1+con=file1 file1 con ihdui ohisd ^Z 1 file(s) copied.
C:\Users\Nikos>type file1 foo bar ihdui ohisd

1

要复制到二进制文件...

将所有文件放在同一个文件夹中,例如G:\Files

g:
cd Files
copy /B *.* TargetFilename.ext

.ext 是所需文件的类型


1
等等!还有更多!(Win7专业版)
>ver

Microsoft Windows [Version 6.1.7601]

>copy file.a.txt + file.b.txt file.ab.txt
file.a.txt
1 file(s) copied

>copy fileA.txt + fileB.txt fileAB.txt
fileA.txt
fileB.txt
1 files(s) copied

除了“1个文件已复制”的通知之外,它只是不喜欢有奇怪名称的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接