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

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

◄Страница 2 из 4► 4

Цитата: syfle от 25.01.2025, 00:57
если программа встречает архив с паролем, то начинает думать думу глубокую, я бы предложил либо насовсем пропускать такие архивы

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

Лайкнул Маркиз
Маркиз
Цитата: Павел от 25.01.2025, 17:44

Вопрос:
эти архивы .7z - это обычные файлы? не жесткие ссылки на файл? не имеют доп. атрибуты (архивный, скрытый)? Найдено 34 архива - там действительно столько в папке? Программа гоняет первые два архива и не переходит к следующим?
Попробуй для интереса beta3 (в виде bat) - ее надо запускать прямо из каталога, где лежат архивы.

Файловая система диска exFAT(иногда подключается к телефону), архивы из того лога без каких либо атрибутов и не являются ссылками, ранее они были rar\zip и 7z стали уже после первого использования твоей программы. Кол-во файлов программа определила верно посчитав архивы в подпапках.

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

Только сейчас вспомнил про вариант с beta3, результат тот же, обрабатывает только первые два архива из \Mods. А скриншот в предыдущем смс я увы загрузить адекватно на imgur не могу, если скопировать ссылку в браузер, то можно скачать скрин напрямую с upload
UPD получилось со скрином

7z Ultra Recompressor

beta9
Скачать

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

Описание:

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 7 (x64) и выше - рекомендуется Windows 10 19H1 (x64) и выше
7-Zip: 16.04 (x64) и выше - рекомендуется 24.09 (x64) и выше

ЦП: Чем жирнее тем лучше
ОЗУ: Минимум от 6 Гб - рекомендуется* от 8 Гб - для Normal, от 24 Гб - для Ultra и Super Ultra
*7-Zip 24.09 (x64) и выше - рекомендуемые параметры для оптимальной скорости

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

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

  • Исправил ошибку инициализации портативного режима.
  • Добавил проверку архивов на шифрование (пароль)
  • Добавил подсчет общего размера архивов до и после (с автоматической подстройкой вывода KB, MB, GB, TB)

Баги:

  • При определенных условиях происходит зацикливание списка архивов, пока не понял причину...

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

 

Лайкнули ShanKey, syfle и Маркиз
ShanKeysyfleМаркиз

Привет! Размеры до и после пустые.

beta9

7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
PORTABLE MODE

Choose compression level:                      * Total Physical RAM: 16 GB
                                               * Logical CPU threads: 12
1 - Normal
2 - Maximum
3 - Ultra
------------------------
4 - Super Ultra [* slow]

Input number: 3

Chosen ULTRA                                   * Number of threads applied: 12

Choose working directory...
Set working directory 'E:\Mods\Kenshi Mods\Новая папка'

Want to START? [Y/N] Y

Start process:
Started at:  3:52:45
__________________________________________________________________________________________

Searching for duplicate archive names in one folder...
Duplicates not found
__________________________________________________________________________________________

Searching for multi-volume 7z, RAR and ZIP archives...
Number of archives found (multi-volume): 0
__________________________________________________________________________________________

Searching for single-volume 7z, RAR and ZIP archives...
Number of archives found (single-volume): 1

Recompressing single-volume archives into 7z [*Ultra]...

Found 'E:\Mods\Kenshi Mods\Новая папка\Centered Inventory Icons v1.rar'
Physical Size = 1382
Method = v6:128K:m5
Recompressed into 'Centered Inventory Icons v1.7z' [*Ultra]
Physical Size = 1294
Method = LZMA2:6k
CRC32 values match
Deleting old archive 'Centered Inventory Icons v1.rar'
__________________________________________________________________________________________

Search ended.
All done. Wasted time: 00:00:00,45
Succeed operations: 1/1
Error Count: 0

Single-volume archives:
Total size before =
Total size after  =

Want another session? [Y/N]

Цитата: syfle от 30.01.2025, 03:54

Привет! Размеры до и после пустые.

Привет. Сначала подумал что может размеры слишком маленькие, из-за этого ошибка. У себя проверил, байты и КБ отображает исправно.
Это разовое или постоянно пустые значения?

Лайкнул Маркиз
Маркиз

7z Ultra Recompressor

beta10
Скачать

В этот раз немного задумался об оптимизации и ускорении процессов. Была идея объединить распаковку и упаковку файлов в один поток, используя только оперативную память. Сам 7-Zip всё еще не поддерживает эту функцию открыто, однако есть документированный способ делать обработку в один поток... но увы, метаданные при этом не передаются, так что это геморно и небезопасно для файлов. Поэтому я решил немного оптимизировать мой текущий способ. 
Поменял приоритетность обработки и вывода некоторых данных. Сменил принцип сверки CRC32. Добавил функцию использования доп. директории при распаковке временных файлов - дает небольшое ускорение если используете перепаковку файлов на HDD. На SSD вынос временной папки за пределы - практически не дает никакого прироста (не важно SATA, NVMe, PCI-e).

Описание:

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

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

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

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

  • Добавил инициализацию SSD (SATA, NVMe, PCI-e) - при выборе директории на HDD, USB, SD будет предложено использовать SSD для ускорения процесса перепаковки (небольшое ускорение).
  • Ввел запрет на выбор директорий в системных папках Windows, Program Files, Program Files (x86)
  • Использовал другой метод сверки CRC32 (небольшое ускорение).  
  • Исправил ошибку когда при определенном названии файла сверка CRC не проходила успешно.
  • Местами оптимизировал скорость вывода данных в интерфейс

Баги:

  • При определенных условиях происходит зацикливание списка архивов, пока не понял причину...

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

 

Лайкнули syfle и Маркиз
syfleМаркиз

Ну что же, я хочу сказать, что beta10 преодолела зацикливание в той самой злополучной папке \Mods\Game2, и завершила рекомпрессию вместе с одной ошибкой "Error! CRC32 values do not match! Old archive was not deleted". Кстати, из моих прошлых(beta9) наблюдений я заметил, что Game2 даже не вся входила в цикл, а только наполовину и папка изобиловала названиями в духе "1. mod v1.1.1.7z"(может это важно?). Я ради интереса переименовал все архивы в папке-дубликате в "test1.7z", "test2.7z" и программа вошла в цикл формата "1...14, 7, 1...14, 7..."(вот только не помню 7 или 6)

beta10. Лог сжатия ненужных архивов с раб стола, 3 ошибки, до beta10 ни одной нигде не было.

7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
PORTABLE MODE

Choose compression level:                      * Total Physical RAM: 16 GB
                                               * Logical CPU threads: 12
1 - Normal
2 - Maximum
3 - Ultra
------------------------
4 - Super Ultra [* slow]

Input number: 3

Chosen ULTRA                                   * Number of threads applied: 12

Select working directory...
Set working directory 'C:\Users\fuckname\Desktop'
SSD Drive detected

Want to START? [Y/N] Y

START PROCESS:
Started at:  3:05:10
__________________________________________________________________________________________

Searching for duplicate archive names in one folder...
Duplicates not found
__________________________________________________________________________________________

Searching for multi-volume 7z, RAR and ZIP archives...
Number of archives found (multi-volume): 0
__________________________________________________________________________________________

Searching for single-volume 7z, RAR and ZIP archives...
Number of archives found (single-volume): 8

Recompressing single-volume archives into 7z [*Ultra]...

Found 'C:\Users\fuckname\Desktop\BSArchPro-63243-0-9-1-1683802185.7z'
Physical Size = 1344346
Method = LZMA2:6m BCJ
Recompressed into 'BSArchPro-63243-0-9-1-1683802185.7z' [*Ultra]
Physical Size = 1326622
Method = LZMA2:6m LZMA:20 BCJ2
CRC32 values match

Found 'C:\Users\fuckname\Desktop\Oblivion BSA Decompressor-49652-1-1-1680157676.7z'
Physical Size = 1228009
Method = LZMA2:22 LZMA:20 BCJ2
Recompressed into 'Oblivion BSA Decompressor-49652-1-1-1680157676.7z' [*Ultra]
Physical Size = 1228009
Method = LZMA2:22 LZMA:20 BCJ2
CRC32 values match

Found 'C:\Users\fuckname\Desktop\WinMP3Packer-1.0.18-alpha-2.04.7z'
Physical Size = 626898
Method = LZMA:3m BCJ
Recompressed into 'WinMP3Packer-1.0.18-alpha-2.04.7z' [*Ultra]
Physical Size = 617453
Method = LZMA2:3m LZMA:20 BCJ2
Error! CRC32 values do not match! Old archive was not deleted

Found 'C:\Users\fuckname\Desktop\Portable_IrfanView.rar'
Physical Size = 18568951
Method = v6:8M:m0:m5
Recompressed into 'Portable_IrfanView.7z' [*Ultra]
Physical Size = 17443883
Method = LZMA2:25 LZMA:20 BCJ2
Error! CRC32 values do not match! Old archive was not deleted

Found 'C:\Users\fuckname\Desktop\7zUltraRecompressor.zip'
Physical Size = 230874
Recompressed into '7zUltraRecompressor.7z' [*Ultra]
Physical Size = 231343
Method = LZMA2:384k LZMA:384k BCJ2
CRC32 values match
Deleting old archive '7zUltraRecompressor.zip'

Found 'C:\Users\fuckname\Desktop\BSArch-64745-0-9-1660562025.zip'
Physical Size = 569846
Recompressed into 'BSArch-64745-0-9-1660562025.7z' [*Ultra]
Physical Size = 391062
Method = LZMA2:1536k LZMA:20 BCJ2
CRC32 values match
Deleting old archive 'BSArch-64745-0-9-1660562025.zip'

Found 'C:\Users\fuckname\Desktop\ImageMagick-7.1.1-43-portable-Q16-HDRI-x64.zip'
Physical Size = 78386734
Recompressed into 'ImageMagick-7.1.1-43-portable-Q16-HDRI-x64.7z' [*Ultra]
Physical Size = 9193654
Method = LZMA2:192m LZMA:20 BCJ2
Error! CRC32 values do not match! Old archive was not deleted

Found 'C:\Users\fuckname\Desktop\Oblivion BSA Uncompressor-51230-1-1-1-1681826649.zip'
Physical Size = 113879
Recompressed into 'Oblivion BSA Uncompressor-51230-1-1-1-1681826649.7z' [*Ultra]
Physical Size = 96149
Method = LZMA2:384k LZMA:384k BCJ2
CRC32 values match
Deleting old archive 'Oblivion BSA Uncompressor-51230-1-1-1-1681826649.zip'
__________________________________________________________________________________________

PROCESS ENDED.
Wasted time: 00:00:34,55
Succeed operations: 5/8
Error Count: 3

Want another session? [Y/N]


Вес до\после в логе выше не вывелся, в \Mods\Game2 все отобразилось правильно, на beta9 дважды выводился просто пустой.
И небольшое предложение к новой версии, может добавить подходящие буквы из русской раскладки к выбору Y/N? Замахался переключать
А пока я все это писал опять попал на зацикливание в папке \Mods, где в корне два архива и перед этим программа оооочень долго соображала на моменте "Searching for single-volume 7z, RAR and ZIP archives...", все 54 архива нашла мгновенно, но после думала очень долго....

Лайкнул Маркиз
Маркиз

syfle, Привет

Цитата: syfle от 01.02.2025, 03:36

но после думала очень долго....

Сначала я подумал что это вычисление через Powershell так всё просаживают, но нет. Я протестировал набор архивов 400штук общим размером 20 Гб и время вычисления обьема занимает где-то 1с, не так страшно. А вот почему затуп произошел - это скорее всего я знаю. Это был еще один архив с паролем, где зашифрован весь архив в том числе заголовок, обработку таких архивов добавлю. Затуп должен пройти.

Цитата: syfle от 01.02.2025, 03:36

может добавить подходящие буквы из русской раскладки к выбору Y/N? 

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

Цитата: syfle от 01.02.2025, 03:36

Вес до\после в логе выше не вывелся, 

Пока логика настроена на показ веса только в случае отсутствия ошибок (о чем я писал в описании). Так как ошибки могут быть разными - могут оставаться старые архивы вместе с новыми, могут пропадать файлы при сжатии (неверный CRC). Всё это ведет к неверному подсчету веса. Я хочу видеть вес только в случае успешной операции.

Цитата: syfle от 01.02.2025, 03:36

 "1...14, 7, 1...14, 7..."(вот только не помню 7 или 6)

Здесь важно смотреть как раз таки имена файлов и путь к ним в полном виде. Скорее всего ошибка зацикливания зависит от этого.

Цитата: syfle от 01.02.2025, 03:36

"Error! CRC32 values do not match! Old archive was not deleted"

Я протестировал и понял что проблему в моем методе сравнения CRC32 в определенных архивах. Пришел к выводу, что новый метод сверки CRC не подходит, вернул старый. Ошибки не будет

Лайкнул Маркиз
Маркиз

Павел,   с п а с и б о

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

7z Ultra Recompressor

beta11
Скачать

Внёс некоторые исправления. Однако всё еще есть моменты которые я не могу побороть в силу примитивности и ограниченности batch script. Возможно что-то исправлю позже...
Потестировал сжатие в Super Ultra. Понизил порог ОЗУ до 16 Гб, этого хватит для обработки архивов объёмом до 1 Гб. При большем объеме возможно ошибки переполнения памяти (аларм). Масштабирование ОЗУ в Super Ultra не предусмотрено (как при других режимах).

Описание:

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

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

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

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

  • Вернул обратно старый метод сверки CRC32, т.к. были недочеты в новом методе
  • Ввел базовую проверку минимального места на диске перед распаковкой - пока проверка по размеру старого архива (без расчета внутреннего размера файлов), надо будет доработать...
  • Добавил простой прогресс-статус в название окна
  • Заменил CEHCO на COCOLOR, в связи с ошибкой при отображении спец. символов, и добавил небольшой цветовой акцент к названиям файлов, для лучшей читаемости 
  • Совместил несколько алармов в один, чтобы уменьшить кол-во одновременных ошибок
  • Добавил проверку полностью зашифрованных архивов (с заголовком) - ушла проблема зависания на таких архивах
  • Понизил требования до 16 Гб для Super Ultra

Баги:

  • При определенных условиях происходит зацикливание списка архивов, пока не понял причину, скорее всего проблема в названиях файлов и каталогов...
  • Не может показать размер файла со спец. символами в названии
  • При обработке многотомных архивов, нужно чтобы в одной папке был один многотомный архив - иначе происходит удаление всех многотомных архивов после обработки первого!

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

 

Лайкнули ShanKey и Маркиз
ShanKeyМаркиз

Павел,  С п а с и б о

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

Привет. А у тебя получилось воспроизвести баг с зацикливанием рекомпрессии? Если что, я могу отправить архивы с которыми у меня это происходит или побыть тестером, дабы это наконец то решить

syfle, привет.
Этот баг получить не удалось. Но я нашел другие баги которые зависят от того как названы архивы. Думаю здесь такая же проблема. Если будет время просто попробуй переименовать архивы в простые имена без символов и точек (к примету sample1.rar). И перемести их в директорию с несложным путем (к примеру D:\test)

◄Страница 2 из 4► 4