有时,ZIP存档中的文件有必要按特定顺序排列(例如,我当前正在创建EPUB,这要求ZIP中的第一个条目为mimetype
文件)。如何在Windows上执行此操作?
我目前使用7-Zip作为存档程序,但没有看到用于控制文件顺序的选项。可以使用7拉链吗?如果没有,我有什么选择?
有时,ZIP存档中的文件有必要按特定顺序排列(例如,我当前正在创建EPUB,这要求ZIP中的第一个条目为mimetype
文件)。如何在Windows上执行此操作?
我目前使用7-Zip作为存档程序,但没有看到用于控制文件顺序的选项。可以使用7拉链吗?如果没有,我有什么选择?
Answers:
mimetype
从EPUB文件中提取mimetype
在EPUB文件中删除mimetype
为!mimetype
!mimetype
到EPUB文件!mimetype
为mimetype
内部EPUB文件转到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.exe
和repair.bat
放在同一目录中,只需将EPUB文件拖到即可repair.bat
。
一种方法是:大多数存档器和存档工具都可以向原始存档附加或添加其他文件项。使用顶部所需的项目创建档案,然后将其他文件项添加到创建的档案中。我知道这在Windows自己的ZIP工具中有效。
似乎真正的答案不在我这里,在这里为C# /programming/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文件夹,然后将文件的模仿类型复制到(空)存档中。
3.现在,将其他文件夹(META-INF和OEBPS)复制到存档中。
http://idpf.org/epub/30/spec/epub30-ocf.html#physical-container-zip
mimetype文件的内容不得包含任何前导填充或空格,并且不得以Unicode签名(或字节顺序标记)开头,并且MIME类型字符串的大小写必须与上面所述完全相同。另外,mimetype文件必须既不压缩也不加密,并且其ZIP标头中不得有多余的字段。
mimetype
,然后添加其他文件),但是没有成功。该mimetype
数据是先在文件中,但文件表似乎是按字母顺序排列。
7z l filename.zip
列出过zip的内容,但它们似乎没有任何顺序(名称,路径,日期,大小...)。因此,使用此命令行可能有助于确定zip中文件的真实顺序。
.epub
在文本编辑器中打开并直接检查文件表来进行检查,因此看来这种方法对我不起作用。我将用Python来解决这个问题,看看是否能解决这个问题。
创建EPUB需要两步过程,首先添加没有任何(!)压缩的mimetype,其次添加其他文件/文件夹。因此,使用7z,您可以执行以下命令:
7z a -mx=0 dummy.zip mimetype
为了能够使用通配符*,您应该将文件mimetype移动到另一个文件夹并开始第二步:
7z a -r dummy.zip *
之后,将ZIP重命名为EPUB,您就走了!
Epubcheck Version 3.0.1 ERROR: C:/MYSELF/Books/1984---George-Orwell/1984---George-Orwell.epub: Mimetype entry missing or not the first in archive
使用EPUB文件时,我遇到了同样的问题。
在Windows 7上,我用一个奇怪的技巧修复了该错误,在该技巧中,我确保将要制作成zip的所有文件都排序为某种方式,从而使mimetype成为顶部的文件(通常按大小排序)。然后,在将它们发送到压缩(zip)文件夹(例如:https : //support.microsoft.com/en-us/help/14200/)之前,请确保使用光标从上至下标记所有文件。Windows-compress-uncompress-zip-files)。之后,我可以将名称和文件类型更改为任何 .epub。
但是,在我升级到Windows 10之后,此技巧不再起作用。幸运的是,我找到了另一种方法。首先,将所需的zip文件顶部(MIME类型)的文件发送到压缩(zip)文件夹中。确保只有该文件。比起我要压缩的其他文件(在我的情况下为两个文件夹),用光标标记它们,并将它们向上拖动到刚创建的zip文件中。然后,Windows将新文件添加到zip文件中,并将最初压缩后的文件保留在顶部。