Вы должны войти, чтобы создавать сообщения и темы.

7zUltra_recompressor - батник для автоматической перепаковки ваших архивов (zip, rar, 7z) в 7z с маскимальным сжатием

1◄Страница 3 из 4►

Павел, что ж, скопировал папку, раздал абсолютно односложные имена архивам и программа без проблем обработала их. Вот типичные имена моих архивов, может пригодится.

Хорошо, я подумаю над решением проблемы...

Привет, появилось предложение. Опциональное добавление в контекстное меню пункта для создания одного архива из папки\папок\файла\файлов с твоими параметрами сжатия. Может пригодится при появлении одного нового архива в папке и дабы не пережимать все или гонять архив в пустую папку для сжатия. А еще можно добавить в целом пункт для переархивирования всех архивов в папке.

Павел, здравствуйте.
Обновите пожалуйста ссылку. 

Лайкнул Roman
Roman

Добрый день,
Долго что-то не занимался данным проектом. Постараюсь в скором времени продолжить наработки, пока еще есть желание и идеи (хотя знаний не всегда хватает).

@syfle, та я особой нужды в этом не вижу -  это тоже самое что контекстное меню самого 7zip. Только лишь что у меня самый последний пресет отличается от встроенных, но оно и не особо пока интересно. Я подумаю...

Обновил ссылку на версию beta11
https://disk.yandex.com/d/p95fMVeH8jbWFA

Лайкнул ShanKey
ShanKey

7z Ultra Recompressor

beta12
Скачать

Долгое время не занимался программой. Пересмотрел заново весь код, стало немного грустно от происходящего внутри и от того количества костылей, которыми я пытаюсь сделать работу возможной. Однако по-прежнему допиливаю и пытаюсь добавить новые функции, но становится всё сложнее бороться с batch (возможно пора переходить на  C# ??)...

Описание:

7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.

Принцип работы:

  • Устанавливаем 7-Zip (x64) или кидаем 7z.exe и 7z.dll в папку с программой (портабельный режим).
  • Запускаем программу, выбираем уровень сжатия и рабочую директорию.
  • Четыре уровня компрессии - имеют плавающую настройку величины словаря в зависимости от архивов. Количество потоков выбирается также исходя из условий.
  • Программа обрабатывает каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX.
  • Архивы с паролями пропускаются.
  • Процесс разбит на три этапа:
    1. проверка идентичных имен архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить;
    2. конвертация многотомных архивов в однотомные - метод Copy (он же Store);
    3. перепаковка однотомных архивов с выбранным уровнем сжатия.
  • В конце подсчет количество операций, затраченное время и количество ошибок.
  • По завершению, если нет критических ошибок, все временные папки с файлами удалятся. Получившиеся архивы .7z замещают старые архивы.

Системные требования:

ОС: минимально  Windows 8 (x64) рекомендуется  Windows 10 19H1 (x64) и выше
7-Zip: минимально  16.04 (x64) рекомендуется  24.09 (x64) и выше
ОЗУ: минимально  6 Гб рекомендуется  от 8 Гб для Normal, от 16 Гб для Ultra и Super Ultra

 ЦП:       Чем жирнее тем лучше
 SSD:     Рекомендуется для распаковки временных файлов

В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) - проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ.

Добавил исправления и улучшения:

  • Немного оптимизировал код на этапе инициализации
  • Добавил проверку .NET Framework 4.x - забыл про это несколько версий назад т.к. внутри есть запросы к Windows Forms
  • Повысил минимальную версию Windows до 8 - опять же выяснил что у меня есть запросы которые требуют минимум Powershell 3.0, а значит Windows 8+
  • Исправил еще один сценарий когда проверка CRC32 не была успешной
  • Изменил принцип расчета и проверки свободного места, теперь расчет размера ведется правильно для крупных файлов (десятки и сотни ГБ)
  • Исправил проблему когда не показывался итоговый расчёт размера файлов при использовании спец символов в названии каталогов (wildcards)

Проблемы и баги:

  • При определенных условиях происходит зацикливание списка архивов, скорее всего проблема в наличии спец символов (так называемых wildcards) в названиях архивов и каталогов...
  • При обработке многотомных архивов, нужно чтобы в одной папке был один многотомный архив - иначе происходит удаление всех многотомных архивов после обработки первого!
  • В новых версиях WIndows 11 (по крайней мере 25H2 и выше) убрали компонент WMIC который задействован здесь. Есть альтернатива, чтобы перевести всё на Powershell, но он объективно медленнее работает в определённых задачах. Чтобы вернуть WMIC можно попробовать команду через Powershell:
Add-WindowsCapability -Online -Name WMIC

По-прежнему использовать только для тестирования!
Для отслеживания происходящих процессов рекомендую использовать directory watcher, по типу Folder Changes View от NirSoft.

 

Лайкнули ShanKey, syfle и Латук
ShanKeysyfleЛатук

7z Ultra Recompressor

beta13
Скачать

Произошли некоторые подвижки в процессе. Решил всё же немного довести до ума и избавиться от старых проблем и ошибок перед тем как добавлять новые функции. Сделал много разных фиксов старого кода. Исправил проблему с ложными удалениями архивов, и потенциально исправил ситуацию с зацикливанием (однако необходимо еще тестирование).

Описание:

7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой, быстрый и в то же время надежный инструмент.

Принцип работы:

  • Устанавливаем 7-Zip (x64) или кидаем 7z.exe и 7z.dll в папку с программой (портабельный режим).
  • Запускаем программу, выбираем уровень сжатия и рабочую директорию.
  • Четыре уровня компрессии - имеют плавающую настройку величины словаря в зависимости от архивов. Количество потоков выбирается автоматически исходя из условий.
  • Программа обрабатывает каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX.
  • Архивы с паролями, скрытые архивы и системные архивы пропускаются.
  • Процесс разбит на три этапа:
    1. проверка идентичных имен архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить;
    2. конвертация многотомных архивов в однотомные - метод Copy (он же Store);
    3. перепаковка однотомных архивов с выбранным уровнем сжатия.
  • В конце подсчет количество операций, затраченное время и количество ошибок.
  • По завершению, если нет критических ошибок, все временные папки с файлами удаляются. Получившиеся новые архивы .7z замещают старые.

Системные требования:

ОС: минимально  Windows 8 (x64) рекомендуется  Windows 10 19H1 (x64) и выше
7-Zip: минимально  16.04 (x64) рекомендуется  24.09 (x64) и выше
ОЗУ: минимально  6 Гб для Normal, 
 16 Гб для Super Ultra
рекомендуется  от 8 Гб для Normal,
 от 24 Гб для Super Ultra

 ЦП:       Чем жирнее тем лучше
 SSD:     Рекомендуется для распаковки временных файлов

В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) - проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ.

Добавил исправления и улучшения:

  • Несколько мелких изменений и улучшений в логике вывода результатов
  • Полностью переработал логику обработки и вывода списка дубликатов
  • Сделал обработку архивов эксклюзивным списком (потенциально убирает зацикливание и повтор файлов)
  • Полностью переработал логику переименования и удаления многотомных архивов (нет ложных удалений архивов)
  • Исправил расчет размера файлов (многотомные и однотомные архивы)

Проблемы и баги:

  • В новых версиях WIndows 11 (24H2 и выше) убрали компонент WMIC который задействован здесь. Можно попытаться вернуть WMIC в Windows введя команду через Powershell:
Add-WindowsCapability -Online -Name WMIC

По-прежнему использовать только для тестирования!
Для отслеживания происходящих процессов рекомендую использовать directory watcher, по типу Folder Changes View от NirSoft.

 

Лайкнули ShanKey, Александр и syfle
ShanKeyАлександрsyfle

syfle, попробуй протестировать ранее зацикленные архивы - напиши есть ли изменения с версией beta13

Лайкнул syfle
syfle

Павел, проблема с зацикливанием решилась, прекрасная работа, спасибо! 👍

Лайкнул Павел
Павел

syfle, отлично, это хорошие новости. Но я бы хотел чтобы ты, запустил beta11 (ссылка есть на нее выше) на этих же архивах и увидел то самое зацикливание, а потом beta13. Так это полностью подтвердит для меня что проблема ушла. 

Я пока тоже продолжаю тестировать у себя подобные сценарии, и хочу поставить точку с этим, чтобы не возвращаться. Далее я уже готовлю еще несколько функций в след бету, а также перевод на русский (это в самом конце).

7z Ultra Recompressor

beta14
Скачать

Потестировав еще немного - есть еще кончено, что исправлять и улучшать, но вроде идёт дело. Критические баги были исправлены, поэтому могу считать эту версию уже более-менее безопасной к применению.
Добавляю некоторые функции потихоньку...

Добавил новое меню:

  • Brute Force (Грубый перебор) - старый режим, пережимает все архивы подряд, всё еще актуален если вы жаждите максимально всё перепаковать.
  • Smart Recompressor (Умный рекомпрессор) - автоопределение необходимости пересжатия. Экспериментальный режим, который не пережимает всё подряд, а сканирует архивы и выбирает только те, которые имеют более слабый или неизвестный метод сжатия. Экономит время и ресуры - полезно запускать в тех директориях где постоянно пополняете архивы. Настроен исходя из выбранного уровня сжатия - пропускает архивы с таким же или более высоким методом сжатия (могут быть осечки). 
  • Test Mode (Тест режим) - отдельное тестирование архивов на ошибки. Полезно запустить хотя бы раз, а затем сканировать состояние архивов при необходимости.

Описание:

7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой, быстрый и в то же время надежный инструмент.

Принцип работы:

  • Устанавливаем 7-Zip (x64) или кидаем 7z.exe и 7z.dll в папку с программой (портабельный режим).
  • Запускаем программу, выбираем уровень сжатия и рабочую директорию.
  • Четыре уровня компрессии - имеют плавающую настройку величины словаря в зависимости от архивов. Количество потоков выбирается автоматически исходя из условий.
  • Программа обрабатывает каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX.
  • Архивы с паролями, скрытые архивы и системные архивы пропускаются.
  • Процесс разбит на три этапа:
    1. проверка идентичных имен архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить;
    2. конвертация многотомных архивов в однотомные - метод Copy (он же Store);
    3. перепаковка однотомных архивов с выбранным уровнем сжатия.
  • В конце подсчет количество операций, затраченное время и количество ошибок.
  • По завершению, если нет критических ошибок, все временные папки с файлами удаляются. Получившиеся новые архивы .7z замещают старые.

Системные требования:

ОС: минимально  Windows 8.1 (x64) рекомендуется  Windows 10 19H1 (x64) и выше
7-Zip: минимально  16.04 (x64) рекомендуется  24.09 (x64) и выше
ОЗУ: минимально  6 Гб для Normal, 
 16 Гб для Super Ultra
рекомендуется  от 8 Гб для Normal,
 от 24 Гб для Super Ultra

 ЦП:       Чем жирнее тем лучше
 SSD:     Рекомендуется для распаковки временных файлов

В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) - проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ.

Добавил исправления и улучшения:

  • Исправил небольшие ошибки из последних версий
  • Избавился от утилиты BRC32, исправил проблему: теперь все архивы имеют регистронезависимую обработку имён и расширений
  • Немного ускорил некоторые части алгоритмов (десятки мс - неплохо, однако всё же есть еще куски, которые работают не супер быстро)
  • Немного подправил алгоритм определения SSD - теперь определение проходит с очень высоким процентом вероятности (повышена минимальная версия Windows до 8.1)
  • Убрал проверку на .NET Framework 4.x - для Windows 8.1 и выше неактуально (нужный инструментарий уже есть без дополнительной установки)
  • Добавил новый функционал: Тест режим (Test Mode) 
  • Добавил новый функционал: Умный режим (Smart Recompressor) - пока что предварительная концепция (нужно будет доработать...)

Проблемы и баги:

  • В новых версиях WIndows 11 (24H2 и выше) убрали компонент WMIC который задействован здесь. Можно попытаться вернуть WMIC в Windows введя команду через Powershell:
Add-WindowsCapability -Online -Name WMIC

Потенциально безопасно использовать, однако нужно больше отзывов.
Для отслеживания происходящих процессов рекомендую использовать directory watcher, по типу Folder Changes View от NirSoft.

 

Лайкнули ShanKey и Латук
ShanKeyЛатук

Добрый день,

Для тех кому интересна программа - было бы неплохо узнать от вас как работает режим Smart Recompressor. Насколько точно он определяет архивы с высокой компрессией, возможно он пропускает архив который вы точно знаете что сжат слабо.

Спасибо.

Добрый день,

Немного идёт работа. За это время наделал несколько beta версий, однако здесь их не выкладывал.
Вот что нового:

Новые режимы сжатия

На сегодняшний день такие архиваторы как 7-Zip и WinRAR на настройке «Максимум» жмут не так, как хочет мое «хочу» – это уже давно не «Максимум» в наших реалиях. Поэтому перепробовав разные параметры сжатия 7-Zip, я сделал выводы, что нужно менять пресеты.

Собственно, 7z Ultra Recompressor – это про жирную компрессию без компромиссов и без устоев старых архиваторов. Поэтому скорость увеличивается, а требования повышаются!

Теория теорией, а будущее все-таки за многопоточностью! До этого я использовал пресет Super Ultra с настройкой Solid-режим, но он был всё-таки медленный! По факту многопоточность и большой объем памяти решает. Я полностью отказался от Solid-режима, т.к. это пережитки прошлого – в этом я окончательно убедился после сотни часов тестов!

А всё из-за того, что я упорно следовал теории и делал недостаточно практики. А почему так произошло? Ну не знаю, не знаю – меня никто не предупреждал!

Да, новые режимы тяжелые на слабых ПК, но на памяти 32+ Гб начинают взлетать в скорости, чего не было в предыдущей реализации. Поэтому новые режимы Super Ultra / Ultimate Ultra рекомендованы только для пользователей с 32+ памятью, иначе – боль.

В дальнейшем хочу убрать еще и Normal как довольно легкий режим, но пока оставлю. Что еще сдерживает – это пример из реального применения моего знакомого: Normal весьма актуален на гипер-больших архивах (несколько баз данных по 400 Гб), он справляется за несколько дней непрерывного пережатия 64 потоками.

Окончательно убрал свои таблицы с искусственными ограничениями по ОЗУ для 7-Zip. Я больше не перехватываю потоки за 7-Zip – пришёл к выводу что внутренние алгоритмы 7-Zip всё-равно сложно переучить, он сам принимает решения на лету.

Новые пресеты Ultra+/ Super Ultra / Ultimate Ultra – это база для тех, кому «ложить на всё» и он жмет архивы, потому что его ПК может!

 

Оптимизации и рефакторинг

7z Ultra Recompressor за счет своей легковесности и бескомпромиссности – возможно, это самое быстрое и мощное решение по пересжатию (на мой вкус).

Для большинства пользователей никаких критичных изменений нет – программа в целом как работала по своему алгоритму, так и работает.

Провел рефакторинг и оптимизацию кода – примерно 2/3 всей программы переписано. Все сторонние утилиты были выкинуты, написаны свои микромодули. Теперь больше половины программы – это C/C# и C/C++ (движок самой 7-Zip). Практически все Batch-костыли заменены на решения C/C#, все WMIC-зависимости устранены, половина PowerShell-кода устранена (еще есть немного функций). Из-за этого возможны вновь некоторые баги, но они не должны быть критичными.

Консоль (плюс базовый скрипт Batch) по-прежнему используется как интерфейс ввода/вывода. Визуально это то, что я хочу – туннельное взаимодействие с пользователем. Вам не нужно бегать по разным меню и чекбоксам в поисках настроек, все возможности представляются в виде последовательного выбора. В лучших традициях DOS-like программ. Весь код на C/C#/Batch написан мной вручную. Аудит и тестирование происходило через несколько ИИ-агентов.

Сделал трюк с двойной заменой настроек реестра для консоли. Понял, что на разных машина моя консоль может выглядеть абсолютно по-разному – поэтому применил данное решение. Это довольно безопасно, так как перед загрузкой моих параметров происходит бэкап пользовательских настроек. И даже если что-то пойдет не так, ветка HKCU\Console не является критичной и потеря этих параметров неопасно.


Баги на Windows 8

В погоне за оптимизацией в прошлых бетах я навтыкал функций PowerShell, которые, как оказалось, не поддерживаются в Windows 8.1. В общем, программа хоть и запускалась на Windows 8, но работала некорректно. Сейчас я это исправил и протестировал на разных виртуалках: Win 8.1, Win 10 (22H2), Win 11 (23H2).

 

Задачи на будущее

Немножко не хватает доп. информации в интерфейсе из-за ограниченных возможностей консоли. Может быть, добавлю когда-нибудь (перепишу свою консоль вывода? Но до этого пока далеко).

Планирую провести оптимизацию остальной 1/3 программы, добавить локализацию, возможно, еще какие функции. По-прежнему не завершён полный пошаговый ручной тест, а также нужно написать подробный FAQ.

Есть мысли еще по улучшениям, например, конвертацию на лету (режим pipe), но у самого разработчика это реализовано с жесткими ограничениями. Не знаю, возможно, это связано с агрессивной математикой LZMA. Также нет полноценной поддержки сжатия через CUDA/OpenCL, что дало бы огромный буст при хороших GPU. Есть проекты, которые реализуют это для других форматов, но 7z опять стоит особняком в стороне.

7z Ultra Recompressor

beta18
Скачать

Новая промежуточная beta-версия

Описание:

7z Ultra Recompressor – мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой, быстрый и в то же время надежный инструмент.

Принцип работы:

  • Устанавливаем 7-Zip (x64) или кидаем 7z.exe и 7z.dll в папку с программой (портабельный режим).
  • Запускаем программу, выбираем уровень сжатия и рабочую директорию.
  • 6 уровней компрессии – имеют плавающую настройку величины словаря в зависимости от архивов. 
  • Программа обрабатывает каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *.sXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX.
  • Скрытые и системные архивы пропускаются.
  • Проверка идентичных имен архивов в одной и той же папке, с выводом аларма – ситуация когда за вас никто не примет решения какой архив оставить.
  • В конце подсчет количество операций, затраченное время и количество ошибок.
  • По завершению, если нет критических ошибок, все временные папки с файлами удаляются. Получившиеся новые архивы .7z замещают старые.

Системные требования:

ОС: минимально  Windows 8 (x64) рекомендуется  Windows 10 19H1 (x64) и выше
7-Zip: минимально  24.09 (x64) рекомендуется  25.01 (x64) и выше
ОЗУ: минимально  6 Гб для Normal, 
 16 Гб для Super Ultra,
 32 Гб для Ultimate Ultra
рекомендуется  от 8 Гб для Normal,
 от 24 Гб для Super Ultra,
 от 48 Гб для Ultimate Ultra

 ЦП:       Чем жирнее тем лучше
 SSD:     Рекомендуется для распаковки временных файлов

В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) – проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ.

Добавил исправления и улучшения:

  • Исправил редкую ошибку чтения на многотомных архивах RAR
  • Добавил обработку и удаление дополнительных многотомных RAR (*.sXX) - старая версия формата
  • Обьеденил обработку single и multi - обьеденил три логики (дубликаты, мульти и синглы) в одну
  • Убрал ограничение из-за которого невозможно было продолжить при ошибке многотомных архивов
  • Убрал ограничение на подсчет размера архивов при ошибке (теперь выводится предупреждение если ошибки могли повлиять на конечный расчет)
  • Добавил ввод пароля для архивов - можно выбрать пропускать или нет пароли с архивами
  • Убрал перерасчет потоков из своей логики - теперь 7zip полностью сам анализирует потоки и ОЗУ - я больше не лезу в настройку производительности
  • Добавил промежуточный пресет Ultra+ и изменил старый пресет Super Ultra (увеличил скорость и увеличил сжатие)
  • Добавил еще один пресет Ultimate Ultra (4ГБ словарь)
  • Повысил минимальную версию 7-Zip до 24.09
  • Множественные мелкие измения в интерфейсе и под капотом
  • Зафиксировал параметры окна конслои через двойную подмену настроек реестра
  • Отказался от WMIC
  • Отказался от других зависимостей

Проблемы и баги:

 

Потенциально безопасно использовать, однако нужно больше отзывов.
Для отслеживания происходящих процессов рекомендую использовать directory watcher, по типу Folder Changes View от NirSoft.

 

Лайкнул Lega77
Lega77
1◄Страница 3 из 4►