Wie kann ich die Reihenfolge der Dateien in einem ZIP-Archiv steuern?

12

Es gibt Zeiten, in denen es erforderlich ist, dass die Dateien in einem ZIP-Archiv in einer bestimmten Reihenfolge vorliegen (zum Beispiel, wenn ich sie gerade erstelle) EPUBs , die erfordern, dass der erste Eintrag in der ZIP der ist mimetype Datei). Wie kann ich das unter Windows machen?

Ich benutze gerade 7-Zip Als mein Archivierer, aber ich sehe keine Option zum Steuern der Dateireihenfolge. Kann das mit 7-zip gemacht werden? Wenn nicht, welche Möglichkeiten habe ich?

Ben Blank
quelle
3
Fügen Sie sie in der Reihenfolge hinzu, in der sie sein müssen. Versuchen Sie zunächst, die MIMETYP-Datei zu komprimieren, und fügen Sie dann die anderen Dateien als zweiten Vorgang zur ZIP-Datei hinzu.
Paul
1
@Paul - Überraschenderweise hat das nicht funktioniert. : - /
Ben Blank
Ist es vielleicht LIFO? Können Sie versuchen, zuletzt Mimetype hinzuzufügen? Sie testen gegen einen Epub-Reader, anstatt nur zu entpacken?
Paul
3
Eine Anwendung, bei der der Inhalt in einer bestimmten Reihenfolge vorliegen muss, ist fehlerhaft.
psusi
3
Meine Güte, die Autoren der Spezifikation müssen zurückgenommen und mit einem Hinweis-um-Vier-Sieg besiegt werden.
psusi

Antworten:

3

Eine Möglichkeit wäre: Die meisten Archivierer und Archivierungstools haben die Möglichkeit, zusätzliche Dateielemente an das Originalarchiv anzuhängen oder diesem hinzuzufügen. Erstellen Sie Ihr Archiv mit den gewünschten Elementen im oberen Bereich und fügen Sie dem erstellten Archiv dann zusätzliche Dateielemente hinzu. Ich weiß, dass dies in Windows-eigenen ZIP-Tools funktioniert.

Es sieht so aus, als ob die eigentliche Antwort für mich unverständlich ist. Hier für C #. https://stackoverflow.com/questions/5898787/creating-an-epub-file-with-a-zip-library

hier für HTML (mit 7z)
http://next.blurb.com/2011/02/17/how-to-make-an-ipad-photo-book/

speziell dieser Teil

2.Öffnen Sie den Ordner mit den Beispielfotobüchern und kopieren Sie zuerst den Mimetyp der Datei in das (leere) Archiv.
3. Kopieren Sie nun die anderen Ordner (META-INF und OEBPS) in das Archiv.


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

Der Inhalt der Mimetype-Datei darf keine führenden Auffüllungen enthalten   oder Leerzeichen dürfen nicht mit der Unicode - Signatur (oder Byte) beginnen   Order Mark), und die Groß- und Kleinschreibung des MIME-Typs muss genau so lauten   oben dargestellt. Die Mimetype-Datei darf zusätzlich keine sein   komprimiert oder verschlüsselt, und es darf kein zusätzliches Feld enthalten sein   ZIP-Header.

Psycogeek
quelle
1
Ich habe es in 7-zip ausprobiert (ein Archiv erstellen mit nur mimetype, dann die anderen Dateien hinzufügen), hatte aber keinen Erfolg. Das mimetype Daten kam zuerst in der Datei, aber die Dateitabelle scheint alphabetisch sortiert zu sein.
Ben Blank
2
@BenBlank Vergewissern Sie sich, dass Sie dies nicht mit einem Zip-Client überprüfen. Die Reihenfolge wird auf eine Art und Weise geändert, die für Menschen geeignet ist, nicht unbedingt für einen Epub-Reader.
Paul
Vermutlich ist das Problem, dass 7-Zip das Verzeichnis gerne in alphabetischer Reihenfolge verwaltet und es dann (notwendigerweise) neu schreibt, wenn es die ZIP-Datei schließt. Theoretisch könnte man dies beheben, indem man die Zip-Datei mit einem Hex-Editor oder einem Ad-hoc-Tool bearbeitet und das Verzeichnis neu anordnet - es ist nicht besonders kompliziert. Die Bearbeitung wird vereinfacht, indem eine Dummy-Datei eingefügt wird, die immer zuerst sortiert wird. Dann sollte natürlich auch die Technik im obigen Link funktionieren.
Daniel R Hicks
ich benutzte 7z l filename.zip um den Inhalt einer Postleitzahl aufzulisten, und sie scheinen in keiner Reihenfolge zu sein (Name, Pfad, Datum, Größe ...). Wenn Sie diese Befehlszeile verwenden, können Sie möglicherweise die richtige Reihenfolge der Dateien in der ZIP-Datei ermitteln.
Scott McClenning
@Paul - Ich überprüfe, indem ich das öffne .epub In einem Texteditor und beim direkten Untersuchen der Dateitabelle sieht es so aus, als würde dieser Ansatz bei mir einfach nicht funktionieren. Ich werde mit dem Python-Hammer das Problem beheben und nachsehen, ob es dadurch nicht behoben wird.
Ben Blank
3

GUI-Version mit 7 Reißverschlüssen:

  1. Extrakt mimetype aus der EPUB-Datei
  2. löschen mimetype in der EPUB-Datei
  3. umbenennen mimetype zu !mimetype
  4. hinzufügen !mimetype in die EPUB-Datei
  5. umbenennen !mimetype zu mimetype in der EPUB-Datei

Einfache Drag & Drop-Version mit 7 Reißverschlüssen:

Gehe zu 7-Zip-Download-Seite und herunterladen 7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager (Funktioniert nicht mit Stable 9.20, funktioniert aber gut mit 9.38 Beta und 15.06 Beta). Extrakt 7za.exe. Code unten speichern als repair.bat Datei:

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

Stellen 7za.exe und repair.bat im selben Verzeichnis und ziehen Sie einfach Ihre EPUB-Datei auf repair.bat.

Piotr Kowalski
quelle
2

Das Erstellen eines EPUB erfordert einen zweistufigen Prozess. Fügen Sie zuerst einen Mimetyp ohne (!) Komprimierung hinzu, und fügen Sie anschließend die anderen Dateien / Ordner hinzu. Mit 7z könnten Sie also die folgenden Befehle ausführen:

7z a -mx=0 dummy.zip mimetype

Um den Platzhalter * verwenden zu können, sollten Sie den Datei-Mimetyp in einen anderen Ordner verschieben und den zweiten Schritt starten:

7z a -r dummy.zip *

Danach benenne die ZIP in EPUB um und du bist weg!

Peter
quelle
Ich habe das gerade ausprobiert und erhalte immer noch diesen Fehler: 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
Tomáš Zato
1

Nach meiner Erfahrung besteht die einfachste Antwort (für Windows 7, 64-Bit) darin, die in Windows integrierte Zip-Funktionalität zu verwenden. Verwenden Sie "Senden an", um den Mimetyp an einen neuen ZIP-Ordner zu senden, und verwenden Sie dann 7Zip, um META-INF und OEBPS zur neuen ZIP-Datei hinzuzufügen. Das scheint immer in Bezug auf die Reihenfolge der Mimetype-Datei zuerst zu funktionieren. Ich habe bisher keinen Erfolg damit gehabt, diese Operation ausschließlich mit 7-zip durchzuführen. (Dies gilt für ePUBS, sollte jedoch auch in anderen Bereichen für die Sequenzierung funktionieren.)

Ich hoffe das hilft jemand anderem.

Kimberly Hitchens
quelle
0

Die Verwendung von winrar hat mir geholfen. Ich habe den Mimetyp zu einem Zip-Archiv hinzugefügt (unkomprimiert!) Und später die restlichen Ordner hinzugefügt, reguläre Komprimierung.

Diese Lösung hat bei mir mit 7-zip nicht funktioniert, da die Dateien immer wieder neu sortiert werden.

kat
quelle
0

Ich hatte das gleiche Problem beim Arbeiten mit EPUB-Dateien.

Unter Windows 7 habe ich es mit diesem seltsamen Trick behoben, bei dem sichergestellt wurde, dass alle Dateien, die ich erstellen wollte, in einer Art und Weise in eine Zip-Datei einsortiert wurden, bei der die Datei als Mimetyp oben angezeigt wurde (normalerweise nach Größe sortiert). Dann habe ich sichergestellt, dass ich alle Dateien von oben nach unten mit meinem Cursor markiert habe, bevor ich sie in einen komprimierten (zip) Ordner schickte (so: https://support.microsoft.com/en-us/help/14200/windows-compress-uncompress-zip-files ). Danach konnte ich den Namen und den Dateityp in ändern was auch immer .epub.

Nach dem Upgrade auf Windows 10 funktionierte dieser Trick jedoch nicht mehr. Zum Glück habe ich einen anderen Weg gefunden. Zuerst senden Sie die Datei, die Sie oben in der Zip-Datei haben möchten (Mimetyp), in einen komprimierten (Zip-) Ordner. Stellen Sie sicher, dass es sich nur um diese Datei handelt. Dann nehme ich die anderen Dateien, die ich komprimieren möchte (in meinem Fall zwei Ordner), markiere sie mit dem Cursor und ziehe sie auf die soeben erstellte komprimierte Datei. Windows fügt dann die neuen Dateien zur ZIP-Datei hinzu und behält die Datei, die Sie ursprünglich gezippt haben, im Vordergrund.

MatsKS
quelle
1
Können Sie klar angeben, wie die Antwort auf die Frage des Autors lautet? Ein Upgrade auf Windows 10 ist keine wirkliche Antwort auf diese Frage. Sie sollten sich darauf konzentrieren, wie Sie es behoben haben, Einzelheiten angeben, Ihre Aussagen sind viel zu weit gefasst. Wenn ich das ursprüngliche Problem reproduzieren würde, wäre ich nicht in der Lage, es mit Ihrer Antwort zu lösen.
Ramhound