ZIPアーカイブ内のファイルの順序を制御するにはどうすればよいですか?


13

ZIPアーカイブ内のファイルを特定の順序にする必要がある場合があります(たとえば、現在、Zipの最初のエントリがファイルであることが必要なEPUBを作成していmimetypeます)。Windowsでこれを行うにはどうすればよいですか?

現在、アーカイバとして7-Zipを使用していますが、ファイルの順序を制御するオプションが表示されません。これは7-zipで実行できますか?そうでない場合、どのようなオプションがありますか?


3
必要な順序でそれらを追加すると、これを行う必要があります。最初にmimetypeファイルを圧縮してから、2番目の操作として他のファイルをzipに追加してみてください。
ポール

1
@Paul —驚いたことに、うまくいきませんでした。:-/
ベンブランク

多分LIFOですか?mimetypeを最後に追加してみてください。あなたは、単に解凍するのではなく、epubリーダーに対してテストしていますか?
ポール

3
コンテンツを特定の順序にする必要があるアプリケーションが壊れています。
-psusi

3
Sheesh、仕様の作成者は、手がかりを取り戻して、4つの手がかりでbeatられる必要があります。
-psusi

回答:


3

1つの方法は次のとおりです。ほとんどのアーカイバとアーカイブツールには、元のアーカイブに追加のファイルアイテムを追加または追加する機能があります。必要なアイテムを上部に持つアーカイブを作成し、作成したアーカイブに追加のファイルアイテムを追加します。これは、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フォルダーを開き、最初にファイルmimetypeを(空の)アーカイブにコピーします。
3.次に、他のフォルダー(META-INFおよびOEBPS)をアーカイブにコピーします。


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

mimetypeファイルの内容には、先頭のパディングや空白を含めることはできません。Unicode署名(またはバイトオーダーマーク)で始めることはできません。また、MIMEタイプ文字列の大文字と小文字は上記のとおりである必要があります。さらに、MIMEタイプファイルは圧縮も暗号化もされてはならず、ZIPヘッダーに余分なフィールドがあってはなりません。


1
私はこれを7-zipで試してみました(のみ mimetypeでアーカイブを作成し、他のファイルを追加しました)が、成功しませんでした。mimetype データは、ファイルに最初に来たが、ファイルテーブルには、アルファベット順にしているようです。
ベンブランク

2
@BenBlank zipクライアントを使用してこれをチェックしていないことを確認してください。epubリーダーが表示するものとは限らず、人間に適した方法で並べ替えます。
ポール

おそらく問題は、7-Zipがディレクトリをアルファ順で維持し、zipファイルを閉じるときに(必要に応じて)書き換えることを好むことです。理論的には、16進エディタまたは何らかのアドホックツールでzipファイルを編集し、ディレクトリを再配置することでこれを修正できます。特に複雑ではありません。常に最初にソートされるダミーファイルを含めることで、編集が簡素化されます。しかし、もちろん、上記のリンクの手法も機能するはずです。
ダニエルRヒックス

以前7z l filename.zipはzipの内容を一覧表示していましたが、それらの順序(名前、パス、日付、サイズなど)が異なるようです。したがって、このコマンドラインを使用すると、zip内のファイルの実際の順序を判断するのに役立つ場合があります。
スコットマックレニング

@Paul — .epubテキストエディタでを開き、ファイルテーブルを直接調べることでチェックしているので、このアプローチは単に私にとっては機能していないようです。Pythonハンマーを使用して問題を解決し、それで解決しないかどうかを確認します。
ベンブランク

3

7-zip GUIバージョン:

  1. mimetypeEPUBファイルから抽出
  2. mimetypeEPUBファイルで削除
  3. 改名mimetypeする!mimetype
  4. !mimetypeEPUBファイルに追加
  5. 内部EPUBファイルに名前!mimetypeを変更しmimetypeます

7-zipシンプルなドラッグアンドドロップバージョン:

7-zipダウンロードページに移動してダウンロードします7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager(安定版9.20では動作しませんが、9.38ベータ版および15.06ベータ版では正常に動作します)。抽出し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

EPUBの作成には2段階のプロセスが必要です。最初に(!)圧縮なしでmimetypeを追加し、次に他のファイル/フォルダーを追加します。したがって、7zを使用すると、次のコマンドを実行できます。

7z a -mx=0 dummy.zip mimetype

ワイルドカード*を使用できるようにするには、ファイルmimetypeを別のフォルダーに移動して、2番目のステップを開始する必要があります。

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
トマシュザト-モニカの復活14年

1

私の経験では、最も単純な答えは(Windows、7、64ビットの場合)、Windowの組み込みZip機能を使用することです。[送信]を使用してmimetypeを新しいzipフォルダーに送信し、7Zipを使用してMETA-INFとOEBPSを新しいzipに追加します。これは、最初にmimetypeファイルを順序付けるという点で常に機能するようです。7-zipのみでこの操作を実行できませんでした。(これはePUBS向けですが、他の分野でもシーケンシングに有効です。)

これが他の人の助けになることを願っています。


0

winrarを使用すると、私にとってはうまくいきました。mimetypeをzipアーカイブに追加し(非圧縮!)、その後、残りのフォルダーを追加して、通常の圧縮を行いました。

このソリューションは、ファイルの順序を変更し続けるため、7-zipでは機能しませんでした。


0

EPUBファイルで作業しているときにも同じ問題が発生しました。

Windows 7では、この奇妙なトリックで修正しました。この場合、すべてのファイルをzipに並べ替え、mimetypeを最上位のファイルにします(通常、サイズで並べ替えます)。次に、圧縮(zip)フォルダー(https://support.microsoft.com/en-us/help/14200/など)に送信する前に、すべてのファイルをカーソルで上から下にマークしたことを確認しましたwindows-compress-uncompress-zip-files)。その後、私は名前とファイルタイプを変更することができますの.epub。

ただし、Windows 10にアップグレードした後、このトリックは機能しなくなりました。幸いなことに、私は別の方法を見つけました。最初に、zipファイルの先頭(mimetype)にあるファイルをcompress(zip)フォルダーに送信します。そのファイルのみであることを確認してください。私がzipしたい他のファイル(私の場合は2つのフォルダ)を取り、カーソルでそれらをマークし、作成したzipファイルまでドラッグします。その後、Windowsは新しいファイルをzipファイルに追加し、最初に圧縮したファイルを一番上に保持します。


1
著者の質問に対する答えが何であるかを明確に示すことができますか?Windows 10へのアップグレードは、実際にはこの質問に対する答えではありません。あなたはそれをどのように修正し、詳細を提供することに集中する必要があります。 元の問題を再現する場合、あなたの答えでは解決できません。
ラムハウンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.