【问题标题】:How to join two binary files on Windows如何在 Windows 上连接两个二进制文件
【发布时间】:2018-11-13 11:11:59
【问题描述】:

我创建了两个二进制文件。我想将它们连接成一个,第二个从结果文件中的偏移量firstFile.Size 开始。我尝试在 Windows 上的 cygwin 中使用命令。

我在cmd中输入了如下命令

cat file1.bin file2.bin > file3.bin

它会生成一个输出文件,但它的大小为 0 字节。有谁知道这是怎么做到的?

【问题讨论】:

  • 不是 cat 用于连接文本文件吗?
  • 如果您使用的是 Windows 10 并且在 Linux 发行版中安装了 WSL,您可以运行上面编写的命令,它会起作用
  • @edwillys 为什么它在 cygwin 中不起作用呢?我认为它相当于在 WSL 中运行它。
  • 没错,我也希望它能够工作。也许它在文件访问级别被阻止。 echo "foo" > bar.txt 有效吗?
  • @auburg 对于 UNIX,文本文件和二进制文件在 cat 方面没有区别(UNIX 没有像 CP/M 和 MS-DOS 那样的“EOF 字符”)。所以该命令应该可以工作,或者应该输出一些错误(或至少记录在系统日志中)。

标签: bin


【解决方案1】:

我最初并没有注意到这个问题是针对 Cygwin 的,无论如何,这是 DOS 的解决方案(不是 Cygwin)。

打开命令提示符并输入COPY /?

COPY 允许您使用 + 运算符连接文件

它还允许您使用 /B 运算符将它们指定为二进制

因此,如果您更改为 CD MyDir 的目录并运行以下命令,我希望您的连接文件会被创建

 COPY /B File1.bin + File2.bin file3.bin

【讨论】:

  • 这被标记为低质量,对解决方案的更多解释将改善答案。
  • 这不会连接文件,它会用第一个覆盖第二个,创建损坏的文件。而且它似乎很慢。我只尝试将 200 字节复制到大约 80 个 200 KB 的文件中,耗时 40 多秒
  • 你是说这会用 File1.bin 覆盖 File2.bin? file3.bin 会发生什么?随时发布更好的答案
  • 我一直对/B 感到困惑的是:它是一个全局选项,还是与位置相关,可能只影响下一个要处理的文件? + 周围的空间有害吗?
【解决方案2】:

要将两个(或多个)二进制文件连接在一起,语法是:

copy file1/b+file2/b file3/b

我在旧 XP 机器上使用 DOS 或 CMD 窗口将两个 100KB 的文件连接在一起,几乎是即时的。

【讨论】:

    【解决方案3】:

    在 windows 上一个版本中,我使用了 HXD 二进制编辑器。在文件工具手册中,您可以选择连接 bin 文件。添加它们,然后键入生成的文件的名称。执行是即时的。

    【讨论】:

    • “执行是瞬时的”可能是相对的:当复制几百 kB 时,可能所有内容都会从读缓存转到写回缓存,完成后延迟写入。但是,当您连接(例如 10GB)ISO 映像的多个部分时,无论您使用什么程序(可能除了您有 64GB 的 RAM),结果不能是即时的。
    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2011-08-27
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多