На волне выкладывания сборников книг в fb2.
Многие устройства и программы-читалки умеют работать с fb2-файлами книг, сжатыми в zip (fb2.zip). Сжатый файл книги занимает в среднем в 2-6 раз меньше места, чем просто fb2. Проблемы две:
1) книги нужно не просто сжать, а каждый fb2 файл нужно сжать в отдельный fb2.zip
2) fb2-файлы могут быть рассортированы по множеству вложенных папок
Ниже приведён текст простеньких bat-файлов, решающих эту задачу - ищутся все fb2 файлы в этой(откуда запущен bat) и вложенных папках, каждый book.fb2 сжимается в отдельный book.fb2.zip. То есть по большому счёту если надо "сжать вообще все fb2" то достаточно запустить процесс один раз в корневой папке вашей fb2-библиотеки.
update: также в комментах сообщают, что аналогичное можно сделать при помощи Total Commander.
Варианта два: при помощи 7-zip и WinRAR, используйте какой больше нравится. По результату сжатия по тестам результат примерно одинаковый (199 книг объёмом 160Мб сжимаются до 67-69Мб шо тем шо этим). WinRAR быстрее, 7-zip бесплатный.
Требования: Win7/10 (на других не тестировал, вероятно тоже будет работать), должен быть установлен 7-zip/WinRAR в стандартную папку C:\Program Files\... Или отредактируйте путь в строке Set ARC="путь к файлу архиватора", должен быть в кавычках.
Как использовать:
1) скопировать нижеприведённый текст в блокнот, сохранить как текстовый файл с именем например, _fb2_to_zip_7zip.bat
2) переместить/скопировать получившийся bat-файл в папку с fb2-файлами (или в корневую папку fb2-библиотеки)
3) запустить эту копию, ждать.
ВАЖНО!!!
1. лучше сначала попробовать на каком-то небольшом количестве файлов, убедиться что всё ок, а потом уже запускать на всей библиотеке.
2. Если файл сжат успешно, то старый FB2 будет удалён, останется только FB2.ZIP.
3. Некоторые программы/оболочки/каталогизаторы могут не уметь работать с fb2.zip. Их работа после сжатия может поломаться.
4. Для e-ink читалок и программ-ридеров, fb2 и fb2.zip это РАЗНЫЕ файлы/книги, поэтому удаление fb2 и загрузка fb2.zip будет воспринято как удаление старой книги и загрузка новой. Скорее всего история чтения/закладки/заметки будут потеряны! Поэтому если у вас хватает места на читалке, то сжимать на ней книжки не нужно. Кроме того любая перезапись увеличивает износ внутренней памяти читалки, для некоторых моделей это критично.
_fb2_to_zip_7zip.bat
@Echo Off
chcp 1251 >nul
cls
Set "BoxIn=."
Set "Maska=*.fb2"
Set "Arc="C:\Program Files\7-Zip\7z.exe" a -tzip -mx7 -sdel"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Maska%" /b /s /a:-d`) DO (
Echo %%f
%Arc% "%%~f.zip" "%%f"
)
Pause
_fb2_to_zip_WinRAR.bat
@Echo Off
chcp 1251 >nul
cls
Set "BoxIn=."
Set "Maska=*.fb2"
Set "Arc="C:\Program Files\WinRAR\WinRAR.exe" a -m5 -ep -ibck -afzip -df"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Maska%" /b /s /a:-d`) DO (
Echo %%f
%Arc% "%%~f.zip" "%%f"
)
Pause
По желанию каждый может переработать под себя. Степень сжатия/скорость можно изменить, для WinRAR надо поменять цифру в -m5 на поменьше (допустимые значения 1-5). В 7-zip это ключ -mx7 (значения от 1 до 9). Семёрка выбрана т.к. на -mx9 сжимает очень медленно, а результат по сжатию почти такой-же.