如何控制 ZIP 存档中的文件顺序?

如何控制 ZIP 存档中的文件顺序?

有时,ZIP 存档中的文件需要按照特定顺序排列(例如,我目前正在创建EPUB,要求 ZIP 中的第一个条目是文件mimetype)。如何在 Windows 上执行此操作?

我目前正在使用7-Zip作为我的归档程序,但我没有看到控制文件顺序的选项。可以使用 7-zip 来实现吗?如果不行,我有什么选择?

答案1

7-zip 图形用户界面版本:

  1. mimetype从 EPUB 文件中提取
  2. mimetype在 EPUB 文件中删除
  3. 重命名mimetype!mimetype
  4. 添加!mimetype到 EPUB 文件
  5. 重命名!mimetypemimetypeEPUB 文件内部

7-zip 简单拖放版本:

7-zip 下载页面并下载7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager(不适用于稳定的 9.20,但适用于 9.38 beta 和 15.06 beta)。提取7za.exe。将以下代码保存为repair.bat文件:

7za x %1 mimetype -y
7za d %1 mimetype
move /y mimetype !mimetype
7za a %1 !mimetype
del /f !mimetype
7za rn %1 !mimetype mimetype

7za.exerepair.bat放在同一目录中,然后将您的 EPUB 文件拖到上面repair.bat

答案2

一种方法是:大多数归档器和归档工具都能够将其他文件项附加或添加到原始归档中。创建您的归档并将所需的项目放在顶部,然后将其他文件项添加到创建的归档中。我知道这在 Windows 自己的 ZIP 工具中有效。

看起来真正的答案超出了我的能力范围,这里是 C# 的答案 https://stackoverflow.com/questions/5898787/creating-an-epub-file-with-a-zip-library

HTML 版本 (使用 7z)
http://next.blurb.com/2011/02/17/how-to-make-an-ipad-photo-book/

特别是这部分

2.打开 sample-photo-book 文件夹,先将文件 mimetype 复制到(空)存档中。3
.现在,将其他文件夹(META-INF 和 OEBPS)复制到存档中。


http://idpf.org/epub/30/spec/epub30-ocf.html#physical-container-zip

MIME 类型文件的内容不得包含任何前导填充或空格,不得以 Unicode 签名(或字节顺序标记)开头,并且 MIME 类型字符串的大小写必须与上面所述完全相同。此外,MIME 类型文件不得压缩或加密,并且其 ZIP 标头中不得有额外字段。

答案3

创建 EPUB 需要两个步骤,首先添加 mimetype 而不进行任何 (!) 压缩,然后添加其他文件/文件夹。因此,使用 7z 时,您可以执行以下命令:

7z a -mx=0 dummy.zip mimetype

为了能够使用通配符 *,您应该将文件 mimetype 移动到另一个文件夹并开始第二步:

7z a -r dummy.zip *

然后将 ZIP 重命名为 EPUB 就可以了!

答案4

使用 winrar 对我来说很管用。我将 mimetype 添加到 zip 存档(未压缩!),然后添加其余文件夹,常规压缩。

对于我来说,此解决方案不适用于 7-zip,因为它不断重新排序文件。

相关内容