【问题标题】:How do I append to a file using the COPY command如何使用 COPY 命令附加到文件
【发布时间】:2012-09-09 20:39:03
【问题描述】:

我正在运行 Windows 7 Ultimate 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 Mode / 7 Professional 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

【问题讨论】:

    标签: windows batch-file cmd windows-7-x64


    【解决方案1】:

    回答:“如何使用 COPY 命令附加到文件

    警告:如果您有一个希望通过 COPY 命令合并的文件列表,这很简单,但可能会破坏您的文件。

    危险的方式

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

    安全方式

    copy /b one + two new_filename -- 将合并 2 个文件(当然你可以列出两个以上),创建一个包含“一”和“二”的新文件名,并按正确的顺序保留原始文件。

    【讨论】:

    • 对我来说,这是迄今为止最好的解决方案。我想将一个文本文件附加到另一个。这是最简单的方法:复制 destin_file new_file 将 new_file 附加到 destin_file
    • @DougNull 这实际上行不通。如果您只有 2 个这样的文件:copy File_1 File2 会发生复制不会执行附加操作,它将创建 File1 的副本并将其命名为 File2。如果 File2 存在,它将覆盖它。我更新了对两文件场景的回答
    【解决方案2】:

    type file2 >> file1

    【讨论】:

    • @JamesK 您从未在问题中提及“二进制”。那你到底想做什么?
    • @EitanT - 我只是想知道该功能是否已从 Windows 中消失,因为它比任何其他内置的文件、二进制或文本连接方法更有效。
    • 其实这也行不通。问题是文件末尾有两个 EOF 字符,因此当使用几乎任何方法进行附加时,一个 EOF 字符仍然存在,附加文本在其后。
    【解决方案3】:

    Windows 8 x86:

    微软视窗 [版本 6.2.9200] (c) 2012 年微软公司。版权所有。 C:\Users\Nikos>echo foo>file1 C:\Users\Nikos>回显栏>file2 C:\Users\Nikos>copy /b file1 + file2 file1 文件 1 文件2 已复制 1 个文件。 C:\Users\Nikos>输入文件1 富 酒吧

    【讨论】:

    • 复制 foo+bar=foo 会得到什么?
    • 我得到了 foo 的原始版本。
    • 我已经验证 copy file1+file2=file1 在 Windows 7 Professional x64 上工作,所以我相信它可能是我的机器。
    • 感谢您帮助我解决这个问题。 :)
    • 有没有办法再次使用命令检索file2和file1??
    【解决方案4】:

    复制到二进制文件...

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

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

    .ext 是所需的文件类型

    【讨论】:

      【解决方案5】:

      确保从从未尝试复制的新文件开始。
      我刚刚发现在我的(XP sp3)copy a+b a 上没有/b1ASUB)附加到文件的末尾,这使得它从type 的输出中消失后的任何内容(但more 将展示下)。 Copy /b a+b a 有效。

      【讨论】:

      • 是的,我能够确认它可以在 XP 上运行。好吧,无论如何都是 XP 模式。
      【解决方案6】:
      @echo off
      
      cls
      
      type "file2.txt" >> "file1.txt"
      
      exit
      

      【讨论】:

        【解决方案7】:

        你试过copy /b file1 + file2 file1

        【讨论】:

        • 是的。我已经尝试了我能想到的每一个迭代,以及我遇到的每一个迭代。
        【解决方案8】:

        copy /b input1 + input2 output
        del input1
        ren output input1
        也许这个? :P

        【讨论】:

        • 当然,即使copy /b file1 + file2 file3 move file3 file1 也可以。我不是试图替换该功能,而是试图发现它是否已从 COPY 命令中删除(以及何时删除),或者我的计算机是否出现问题。
        【解决方案9】:
        C:\Users\Nikos>输入文件1 富 酒吧 C:\Users\Nikos>复制文件1+con=file1 文件 1 骗局 伊堆 奥希德 ^Z 已复制 1 个文件。 C:\Users\Nikos>输入文件1 富 酒吧 伊堆 奥希德

        【讨论】:

          【解决方案10】:

          等等!还有更多! (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 个文件”通知不谈,它只是不喜欢名称有趣的文件。

          【讨论】:

            【解决方案11】:
            1. 将所有文件放在同一个文件夹中。
            2. copy *.* ´target.ext'
            3. ????
            4. 利润!

            【讨论】:

              猜你喜欢
              • 2013-06-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-08-03
              • 1970-01-01
              • 2010-10-28
              • 1970-01-01
              • 2016-07-11
              相关资源
              最近更新 更多