Come posso controllare l'ordine dei file in un archivio ZIP?


13

Ci sono momenti in cui è necessario che i file in un archivio ZIP siano in un ordine specifico (ad esempio, attualmente sto creando EPUB , che richiedono che la prima voce in ZIP sia il mimetypefile). Come posso farlo su Windows?

Attualmente sto usando 7-Zip come mio archiviatore, ma non vedo un'opzione per controllare l'ordine dei file. Questo può essere fatto con 7-zip? In caso contrario, quali opzioni ho?


3
Aggiungendoli nell'ordine in cui devono essere dovrebbero farlo. Prova a comprimere prima il file mimetype, quindi aggiungendo gli altri file allo zip come seconda operazione.
Paul,

1
@Paul - Sorprendentemente, non ha funzionato. : - /
Ben Blank

È forse LIFO? Puoi provare ad aggiungere il mimetype per ultimo? Stai testando contro un lettore epub giusto, piuttosto che solo decomprimere?
Paul,

3
Un'applicazione che richiede che il contenuto sia in un ordine specifico viene interrotta.
psusi,

3
Sheesh, gli autori delle specifiche devono essere ripresi e battuti con un indizio per quattro.
psusi,

Risposte:


3

Un modo potrebbe essere: la maggior parte degli archivi e gli strumenti di archiviazione hanno la possibilità di aggiungere o aggiungere elementi di file aggiuntivi all'archivio originale. Crea il tuo archivio con gli elementi che desideri nella parte superiore, quindi aggiungi altri elementi di file all'archivio creato. So che funziona con gli strumenti ZIP di Windows.

sembra che la vera risposta sia oltre me, qui per C # /programming/5898787/creating-an-epub-file-with-a-zip-library

qui per HTML (usando 7z)
http://next.blurb.com/2011/02/17/how-to-make-an-ipad-photo-book/

specificamente questa parte

2.Aprire la cartella del libro fotografico di esempio e copiare prima il file mimetype nell'archivio (vuoto).
3.Ora, copia le altre cartelle (META-INF e OEBPS) nell'archivio.


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

Il contenuto del file mimetype non deve contenere alcuna spaziatura iniziale o spazio bianco, non deve iniziare con la firma Unicode (o Byte Order Mark) e il caso della stringa di tipo MIME deve essere esattamente come presentato sopra. Inoltre, il file mimetype non deve essere né compresso né crittografato e non deve esserci un campo aggiuntivo nella sua intestazione ZIP.


1
Ho provato questo in 7-zip (creando un archivio con solo mimetype , quindi aggiungendo gli altri file), ma non ho avuto successo. I mimetype dati sono arrivati ​​per primi nel file, ma la tabella dei file sembra essere in ordine alfabetico.
Ben Blank

2
@BenBlank Assicurati di non verificare questo tramite un client zip: riordineranno in un modo che si adatta agli umani, non necessariamente quello che vedrà un lettore di epub.
Paul

Presumibilmente il problema è che a 7-Zip piace mantenere la sua directory in ordine alfa e quindi (necessariamente) riscriverla quando chiude il file zip. Si potrebbe, in teoria, risolvere questo problema modificando il file zip con un editor esadecimale o una sorta di strumento ad-hoc e riorganizzando la directory - non è particolarmente complicato. La modifica sarebbe semplificata includendo un file fittizio che ordina sempre per primo. Ma poi, ovviamente, anche la tecnica nel link sopra dovrebbe funzionare.
Daniel R Hicks,

Ho usato 7z l filename.zipper elencare il contenuto di una zip e non sembrano essere in alcun ordine (nome, percorso, data, dimensione ...). Pertanto, l'utilizzo di questa riga di comando può aiutare a determinare il vero ordine dei file nella zip.
Scott McClenning,

@Paul - Sto verificando aprendo .epubin un editor di testo ed esaminando direttamente la tabella dei file, quindi sembra che questo approccio semplicemente non funzioni per me. Prenderò il martello Python al problema e vedrò se non lo risolve.
Ben Blank

3

Versione GUI a 7 zip:

  1. estrarre mimetypedal file EPUB
  2. cancellare mimetypenel file EPUB
  3. rinominare mimetypein!mimetype
  4. aggiungi !mimetypeal file EPUB
  5. rinomina !mimetypedi mimetypefile ePub all'interno

Versione drag and drop semplice a 7 zip:

Vai alla pagina di download a 7 zip e scarica 7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager(non funziona con 9.20 stabile, ma funziona bene con 9.38 beta e 15.06 beta). Extract 7za.exe. Salva il codice qui sotto come repair.batfile:

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

Inserisci 7za.exee repair.batnella stessa directory e trascina semplicemente il tuo file EPUB su repair.bat.


2

La creazione di un EPUB richiede un processo in due passaggi, in primo luogo aggiungere il mimetype senza alcuna compressione (!), In secondo luogo aggiungere gli altri file / cartelle. Quindi usando 7z potresti prendere i seguenti comandi:

7z a -mx=0 dummy.zip mimetype

Per poter utilizzare il carattere jolly * è necessario spostare il tipo di file mimetype in un'altra cartella e iniziare il secondo passaggio:

7z a -r dummy.zip *

Dopodiché rinominare ZIP in EPUB e non ci sei più!


Ho appena provato questo e ho ancora questo errore: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 - Ripristina Monica il

1

Nella mia esperienza, la risposta più semplice (per Windows, 7, 64-bit) è utilizzare la funzionalità Zip integrata di Windows. Utilizzare "Invia a" per inviare il mimetype in una nuova cartella zippata, quindi utilizzare 7Zip per aggiungere META-INF e OEBPS al nuovo zip. Ciò sembra funzionare sempre in termini di sequenziamento del file mimetype prima. Non ho avuto successo eseguendo questa operazione esclusivamente con 7-zip. (Questo è per ePUBS, ma dovrebbe funzionare, per il sequenziamento, anche in altre aree.)

Spero che questo aiuti qualcun'altro.


0

Usare winrar ha fatto il trucco per me. Ho aggiunto il mimetype a un archivio zip (non compresso!), Quindi ho aggiunto le cartelle rimanenti, una compressione regolare.

Questa soluzione non ha funzionato con 7-zip per me, poiché continua a riordinare i file.


0

Ho avuto lo stesso problema lavorando con i file EPUB.

Su Windows 7 l'ho risolto con questo strano trucco in cui mi sono assicurato di aver ordinato tutti i file che avrei creato su una zip in un modo che facesse mimetizzare il file in cima (ordinandoli per dimensione di solito). Quindi mi sono assicurato di aver contrassegnato tutti i file dall'alto verso il basso con il cursore prima di inviarli a una cartella compressa (zip) (come questa: https://support.microsoft.com/en-us/help/14200/ windows-compress-uncompress-zip-files ). Dopo ciò ho potuto cambiare il nome e il tipo di file in qualunque .epub.

Tuttavia, dopo l'aggiornamento a Windows 10 questo trucco non ha più funzionato. Fortunatamente ho trovato un altro modo. Per prima cosa, invii il file desiderato in alto (mimetype) nel file zip a una cartella compressa (zip). Assicurati che sia solo quel file. Poi prendo gli altri file che voglio comprimere (due cartelle nel mio caso) contrassegnarli con il cursore e trascinarli nel file zip che ho appena creato. Windows aggiungerà quindi i nuovi file al file zip e manterrà il file originariamente compresso nella parte superiore.


1
Puoi indicare chiaramente qual è la risposta alla domanda dell'autore? L'aggiornamento a Windows 10 non è in realtà una risposta a questa domanda. Dovresti concentrarti su come l'hai risolto, fornire dettagli specifici, le tue affermazioni sono ampiamente diffuse. Se dovessi riprodurre il problema originale, non sarei in grado di risolverlo con la tua risposta.
Ramhound,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.