Бывают случаи, когда необходимо, чтобы файлы в ZIP-архиве располагались в определенном порядке (например, я сейчас создаюEPUB-файлы, которые требуют, чтобы первой записью в ZIP-архиве был mimetype
файл). Как это сделать в Windows?
Я сейчас использую7-Зипкак мой архиватор, но я не вижу возможности контролировать порядок файлов. Можно ли это сделать с помощью 7-zip? Если нет, какие у меня есть варианты?
решение1
Версия графического интерфейса 7-zip:
- извлечение
mimetype
из файла EPUB - удалить
mimetype
в файле EPUB - переименовать
mimetype
в!mimetype
- добавить
!mimetype
в файл EPUB - переименовать
!mimetype
воmimetype
внутренний файл EPUB
Простая версия 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.exe
и repair.bat
в тот же каталог и просто перетащите файл EPUB на repair.bat
.
решение2
Один из способов: большинство архиваторов и инструментов архивирования имеют возможность добавлять или дополнять элементы файлов к исходному архиву. Создайте свой архив с нужными элементами вверху, затем добавьте дополнительные элементы файлов в созданный архив. Я знаю, что это работает в собственных инструментах ZIP Windows.
похоже, настоящий ответ мне неизвестен, здесь для C# https://stackoverflow.com/questions/5898787/создание-файла-epub-с-библиотекой-zip
здесь для 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. Я добавил MIME-тип в zip-архив (несжатый!), затем позже добавил оставшиеся папки, обычное сжатие.
Это решение у меня не сработало с 7-zip, так как он постоянно меняет порядок файлов.