使用批处理文件和7zip压缩epub文件

3

我创建了这个批处理文件来将我的epub文件压缩成一个epub文件。

它会检查是否已经存在epub文件,并将其删除。

它会检查当前文件夹的名称,然后简单地创建一个同名的zip文件。然后将该.zip文件重命名为.epub。

for %%a in (.) do set currentfolder=%%~na
del *.epub
7z a -tzip %currentfolder%.zip META-INF OPS mimetype
rename *.zip *.epub

然而,这个epub文件没有通过验证。 http://validator.idpf.org/ 给了我两个错误,我需要修复它们。
  • Mimetype条目缺失或不在存档的第一位
  • 项目(OPS/image/Thumbs.db)存在于zip文件中,但未在OPF文件中声明

1.我该如何强制mimetype文件成为存档中的第一个文件?

2.我该如何删除这个thumbs.db文件?我可以在存档中看到它,但在资源管理器中找不到它。

提前感谢您的帮助。

5个回答

2

在zip文件名后面放置mimetype作为第一个文件规范,这样它应该会首先被处理。

查找7zip的文件排除功能,并将其与thumbs.db一起使用,因为它是一个隐藏文件。


我已经添加了排除标签,它完美地工作了,谢谢。但是文件类型问题仍未解决。无论我在文件规范的哪个位置放置文件类型,7zip都会按字母顺序添加它们。 - Morne
使用两个7Zip命令行。第一个命令行将创建存档并包括mimetype。第二个命令行将使用剩余的文件“添加”到存档中。关于thumbs.db:您的命令只会添加特定的文件,因此不应该添加thumbs.db。 - foxidrive
我使用了两个7zip命令行,但仍然出现有关缺少 mimetype 的错误。我不认为7zip会保留文件添加的顺序。 - kristianp

2

Ferroao的想法是正确的,但可以简化:

cd "folder of epub content"

# add mimetype 1st
zip -0 -X ../file.epub mimetype

# add the rest
zip -9 -X -r -u ../file.epub *

第二个命令中的 -u 表示告诉 Zip 只添加新修改的文件,因此它将在第二遍跳过 MIME 类型。

0
mimetype 放在第一位,但不进行压缩。

0

查看此答案,它包含一个脚本,可将MIME类型移动到epub文件的开头,并通过使用文件名! mimetype将其添加为第一项。然后在zip文件中将其重命名为mimetype。https://superuser.com/a/966241

关键是在zip文件内部进行重命名:

"C:\Program Files\7-Zip\7z.exe" a myfile.zip !mimetype
"C:\Program Files\7-Zip\7z.exe" rn myfile.zip !mimetype mimetype

0

我无法使用7z,最后做了以下操作:

cd "folder of epub content"

# add mimetype 1st
zip -0 -X ../file.epub mimetype

# avoid writing it again in the next step, here I renamed
mv mimetype backup_mimetype

# add the rest
zip -9 -X -r ../file.epub *

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