如何控制 ZIP 檔案中檔案的順序?

如何控制 ZIP 檔案中檔案的順序?

有時,ZIP 檔案中的檔案需要按特定順序排列(例如,我目前正在創建EPUB,這要求 ZIP 中的第一個條目是檔案mimetype)。我怎樣才能在 Windows 上執行此操作?

我目前正在使用7-拉鍊作為我的存檔器,但我沒有看到控制檔案順序的選項。這可以用 7-zip 來完成嗎?如果沒有,我有什麼選擇?

答案1

7-zip GUI 版本:

  1. mimetype從 EPUB 檔案中提取
  2. 刪除mimetypeEPUB 檔案中的內容
  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

mimetype 檔案的內容不得包含任何前導填充或空格,不得以 Unicode 簽署(或位元組順序標記)開頭,且 MIME 類型字串的大小寫必須與上面所示完全相同。此外,mimetype 檔案不得壓縮或加密,且其 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,因為它不斷對檔案進行重新排序。

相關內容