7zUltra_recompressor - батник для автоматической перепаковки ваших архивов (zip, rar, 7z) в 7z с маскимальным сжатием
Цитата: Павел от 05.01.2025, 00:20Добрый день,
Много лет назад я собрал такой батник под свои нужны. Ну там строчку подглядел, там скоммуниздил... В целом компоновку и описание делал сам, однако я не программист, просто энтузиаст.
В вкратце, вещь полезная для тех у кого большие коллекции архивов, и со временем возникает желание пережать их используя современные мощности компьютера. У меня много ромов и образов видеоигр от консолей, и эта идея высвободила мне до 100гб информации.
В целом версия рабочая, однако есть некоторые мелочи в батнике которые хочется исправить.Описание:
Сделал три уровня сжатия на выбор: Normal, High, Ultra. Всё это стандартные настройки 7zip и танцы с дополнительными функциями я не использовал, т.к. на сегодняшний момент 7zip 24.09 использует достаточно продвинутые настройки и менять их - особого прироста сжатия не дает (дает только прирост времени кодирования).Работает так:
Переносим в батник на диск или папку где лежат все интересующие нас архивы.
Батник работает только вглубь (вместе с подкаталогами) обрабатывая каждый архив zip, rar, 7z
Создает временные папки с файлами и удаляет их. Получившиеся архивы 7z замещают старые архивы.
Есть на выбор три степени компрессии.
В конце подсчет времени работы.[spoiler title="Батник:"]
@ECHO OFF COLOR 71 REM 7zUltra_recompressor - find all .zip, .rar, .7z files in the current directory and subfolders, recompress them into 7zip files - then delete the originals. :menu1 ECHO. ECHO Choose compression level: ECHO. ECHO 1 - Normal (LZMA2:25) ECHO 2 - High (LZMA2:27) ECHO 3 - Ultra (LZMA2:28) ECHO. SET /p 7zlevel="Press number: " IF "%7zlevel%"=="1" ( SET "x=-mx=5" SET "y=Normal" ) IF "%7zlevel%"=="2" ( SET "x=-mx=7" SET "y=High" ) IF "%7zlevel%"=="3" ( SET "x=-mx=9" SET "y=Ultra" ) if not defined 7zlevel goto menu1 REM Start time counting SET StartTime=%time:~-0,8% SET StTi0=%StartTime: =0% SET ROOTDIR=%CD% ECHO. ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip %y%... for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do ( REM Set file attribute to "read+write" ATTRIB -R "%%F" ECHO Found %%F to recompress... REM Extract archive to folder "contents" "C:\Program Files\7-Zip\7z" x "%%F" -o"%%F contents" REM Does 7zip created the folder correctly? IF EXIST "%%~fF contents" ( REM Change directory for 7zip CD "%%~fF contents" "C:\Program Files\7-Zip\7z" a -t7z "../%%~nF.7z" * %x% CD "%ROOTDIR%" REM Delete the temporary "contents" folder RMDIR "%%~fF contents" /S /Q ECHO. ECHO Searching for old RAR and ZIP files to delete... for /R "%ROOTDIR%" %%F in (*.rar *.zip) do ( ECHO Found %%F to possibly delete... REM Check old archive IF EXIST "%%~pnF.7z" ( REM Found copy - delete the old archive DEL "%%F" /F /Q ECHO Found %%~pnF.7z so can delete %%F. Deleted. ) ELSE ( ECHO Cannot delete %%F, no %%~pnF.7z file found. ) ) ECHO Search ended. ECHO Recompressed %%F to %%~nF.7z (%y%) ) ) REM Finish time counting SET FinishTime=%time:~-0,8% SET FiTi0=%FinishTime: =0% REM Calculating time in hh:mm:ss format - send seconds setlocal enabledelayedexpansion call:timecalc %StTi0% StT call:timecalc %FiTi0% FiT call:difference %StT% %FiT% ECHO. ECHO All done. Wasted time: %d% endlocal pause EXIT REM Seconds serialize :timecalc SET "x=%~1" SET /a "%2=%x:~0,2%*3600+%x:~3,2%*60+%x:~6,2%" EXIT /b REM Seconds deserialize :difference SET /a "d=%~2-%~1" SET /a "hh=d/3600","mm=d/60%%60","ss=d%%60" SET "d=" for %%i in (%hh% %mm% %ss%) do ( if %%i lss 10 (set "d=!d!0%%i:") else (set "d=!d!%%i:")) SET "d=!d:~,-1!" EXIT /b pause[/spoiler]
Прошу посмотреть опытных программистов с оценкой и правкой.
Есть следуюшие проблемы:
- В меню выбора не влозвращает обратно при выборе неверного значения
- Не выводит значение %y%
Понимаю что давно этим не занимался - скорее всего где-то банальные проблемы с синтакисисом или логикой.
Версия пробная! Использовать только для тестирования!
Добрый день,
Много лет назад я собрал такой батник под свои нужны. Ну там строчку подглядел, там скоммуниздил... В целом компоновку и описание делал сам, однако я не программист, просто энтузиаст.
В вкратце, вещь полезная для тех у кого большие коллекции архивов, и со временем возникает желание пережать их используя современные мощности компьютера. У меня много ромов и образов видеоигр от консолей, и эта идея высвободила мне до 100гб информации.
В целом версия рабочая, однако есть некоторые мелочи в батнике которые хочется исправить.
Описание:
Сделал три уровня сжатия на выбор: Normal, High, Ultra. Всё это стандартные настройки 7zip и танцы с дополнительными функциями я не использовал, т.к. на сегодняшний момент 7zip 24.09 использует достаточно продвинутые настройки и менять их - особого прироста сжатия не дает (дает только прирост времени кодирования).
Работает так:
Переносим в батник на диск или папку где лежат все интересующие нас архивы.
Батник работает только вглубь (вместе с подкаталогами) обрабатывая каждый архив zip, rar, 7z
Создает временные папки с файлами и удаляет их. Получившиеся архивы 7z замещают старые архивы.
Есть на выбор три степени компрессии.
В конце подсчет времени работы.
@ECHO OFF
COLOR 71
REM 7zUltra_recompressor - find all .zip, .rar, .7z files in the current directory and subfolders, recompress them into 7zip files - then delete the originals.
:menu1
ECHO.
ECHO Choose compression level:
ECHO.
ECHO 1 - Normal (LZMA2:25)
ECHO 2 - High (LZMA2:27)
ECHO 3 - Ultra (LZMA2:28)
ECHO.
SET /p 7zlevel="Press number: "
IF "%7zlevel%"=="1" (
SET "x=-mx=5"
SET "y=Normal"
)
IF "%7zlevel%"=="2" (
SET "x=-mx=7"
SET "y=High"
)
IF "%7zlevel%"=="3" (
SET "x=-mx=9"
SET "y=Ultra"
)
if not defined 7zlevel goto menu1
REM Start time counting
SET StartTime=%time:~-0,8%
SET StTi0=%StartTime: =0%
SET ROOTDIR=%CD%
ECHO.
ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip %y%...
for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do (
REM Set file attribute to "read+write"
ATTRIB -R "%%F"
ECHO Found %%F to recompress...
REM Extract archive to folder "contents"
"C:\Program Files\7-Zip\7z" x "%%F" -o"%%F contents"
REM Does 7zip created the folder correctly?
IF EXIST "%%~fF contents" (
REM Change directory for 7zip
CD "%%~fF contents"
"C:\Program Files\7-Zip\7z" a -t7z "../%%~nF.7z" * %x%
CD "%ROOTDIR%"
REM Delete the temporary "contents" folder
RMDIR "%%~fF contents" /S /Q
ECHO.
ECHO Searching for old RAR and ZIP files to delete...
for /R "%ROOTDIR%" %%F in (*.rar *.zip) do (
ECHO Found %%F to possibly delete...
REM Check old archive
IF EXIST "%%~pnF.7z" (
REM Found copy - delete the old archive
DEL "%%F" /F /Q
ECHO Found %%~pnF.7z so can delete %%F. Deleted.
) ELSE (
ECHO Cannot delete %%F, no %%~pnF.7z file found.
)
)
ECHO Search ended.
ECHO Recompressed %%F to %%~nF.7z (%y%)
)
)
REM Finish time counting
SET FinishTime=%time:~-0,8%
SET FiTi0=%FinishTime: =0%
REM Calculating time in hh:mm:ss format - send seconds
setlocal enabledelayedexpansion
call:timecalc %StTi0% StT
call:timecalc %FiTi0% FiT
call:difference %StT% %FiT%
ECHO.
ECHO All done. Wasted time: %d%
endlocal
pause
EXIT
REM Seconds serialize
:timecalc
SET "x=%~1"
SET /a "%2=%x:~0,2%*3600+%x:~3,2%*60+%x:~6,2%"
EXIT /b
REM Seconds deserialize
:difference
SET /a "d=%~2-%~1"
SET /a "hh=d/3600","mm=d/60%%60","ss=d%%60"
SET "d="
for %%i in (%hh% %mm% %ss%) do (
if %%i lss 10 (set "d=!d!0%%i:") else (set "d=!d!%%i:"))
SET "d=!d:~,-1!"
EXIT /b
pause
Прошу посмотреть опытных программистов с оценкой и правкой.
Есть следуюшие проблемы:
- В меню выбора не влозвращает обратно при выборе неверного значения
- Не выводит значение %y%
Понимаю что давно этим не занимался - скорее всего где-то банальные проблемы с синтакисисом или логикой.
Версия пробная! Использовать только для тестирования!
Цитата: Павел от 06.01.2025, 05:25Благодаря напутствиям и попутному ветру немного довел до ума...
Исправил:
- всякие детские ошибки в коде
- теперь меню работает как надо
- меньше сервисной информации в окне вывода
- добавил проверку на установленный 7zip (рекомедуется 16.04 и выше)
- работает как с x64 так и x86
[spoiler title="7zUltra_recompressor_beta2.bat"]
@ECHO OFF COLOR 71 title 7zUltra_recompressor REM 7zUltra_recompressor_beta2 - find all .zip, .rar, .7z files in the current directory and subfolders, recompress them into 7zip with chosen compression level - then delete the originals. REM Need to install latest version of 7zip (supports both x86 and x64) REM Check for 7zip install folder if exist "%ProgramFiles%\7-Zip\7z.exe" set r=%ProgramFiles%\7-Zip\ &goto start1 if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" set r=%ProgramFiles(x86)%\7-Zip\ &goto start1 COLOR 74 ECHO No 7zip installation folder found... ECHO Need to install 7zip 16.04 or later pause >nul EXIT /b :start1 cls goto start2 :start2 ECHO. ECHO Choose compression level: ECHO. ECHO 1 - Normal (LZMA2) ECHO 2 - High (LZMA2) ECHO 3 - Ultra (LZMA2) ECHO. set /p input= Input number: ECHO. if %input%==1 goto A if %input%==2 goto B if %input%==3 goto C ECHO Incorrect value! ECHO. ECHO Press any key to go back. pause >nul cls goto start1 :A ECHO Choosen NORMAL set x=-mx=5 set y=Normal goto P1 :B ECHO Choosen HIGH set x=-mx=7 set y=High goto P1 :C ECHO Choosen ULTRA set x=-mx=9 set y=Ultra goto P1 :P1 ECHO Start compressing process: REM Start time counting set StartTime=%time:~-0,8% set StTi0=%StartTime: =0% REM Start unpacking process set ROOTDIR=%CD% ECHO. ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip [*%y%]... for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do ( REM Set file attribute to "read+write" ATTRIB -R "%%F" ECHO. ECHO Found %%F to recompress REM Extract archive to folder "contents" "%r%\7z" x "%%F" -o"%%F contents" | findstr /I "archive everything" REM Check if 7zip created the folder correctly if exist "%%~fF contents" ( REM Change directory for 7zip CD "%%~fF contents" REM Start packing process "%r%\7z" a -t7z "../%%~nF.7z" * %x% | findstr /I "archive everything" CD "%ROOTDIR%" REM Delete the temporary "contents" folder RMDIR "%%~fF contents" /S /Q ECHO. REM Start searching for the old archive for /R %%F in (*.rar *.zip) do ( REM Check if its a copy - delete old archive if exist "%%~pnF.7z" ( DEL "%%F" /F /Q ECHO Deleting old archive %%~nxF... ) ) ECHO Recompressed %%~nxF to %%~nF.7z [*%y%] ) ) REM Finish time counting set FinishTime=%time:~-0,8% set FiTi0=%FinishTime: =0% REM Counting time process - calculating time in hh:mm:ss format - send seconds setlocal enabledelayedexpansion call:timecalc %StTi0% StT call:timecalc %FiTi0% FiT call:difference %StT% %FiT% ECHO. ECHO Search ended. REM Print counted time ECHO All done. Wasted time: %d% endlocal pause EXIT REM Counting time process - seconds serialize :timecalc set "x=%~1" set /a "%2=%x:~0,2%*3600+%x:~3,2%*60+%x:~6,2%" EXIT /b REM Counting time process - seconds deserialize :difference set /a "d=%~2-%~1" set /a "hh=d/3600","mm=d/60%%60","ss=d%%60" set "d=" for %%i in (%hh% %mm% %ss%) do ( if %%i lss 10 (set "d=!d!0%%i:") else (set "d=!d!%%i:")) set "d=!d:~,-1!" EXIT /b pause[/spoiler]
Благодаря напутствиям и попутному ветру немного довел до ума...
Исправил:
- всякие детские ошибки в коде
- теперь меню работает как надо
- меньше сервисной информации в окне вывода
- добавил проверку на установленный 7zip (рекомедуется 16.04 и выше)
- работает как с x64 так и x86
@ECHO OFF
COLOR 71
title 7zUltra_recompressor
REM 7zUltra_recompressor_beta2 - find all .zip, .rar, .7z files in the current directory and subfolders, recompress them into 7zip with chosen compression level - then delete the originals.
REM Need to install latest version of 7zip (supports both x86 and x64)
REM Check for 7zip install folder
if exist "%ProgramFiles%\7-Zip\7z.exe" set r=%ProgramFiles%\7-Zip\ &goto start1
if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" set r=%ProgramFiles(x86)%\7-Zip\ &goto start1
COLOR 74
ECHO No 7zip installation folder found...
ECHO Need to install 7zip 16.04 or later
pause >nul
EXIT /b
:start1
cls
goto start2
:start2
ECHO.
ECHO Choose compression level:
ECHO.
ECHO 1 - Normal (LZMA2)
ECHO 2 - High (LZMA2)
ECHO 3 - Ultra (LZMA2)
ECHO.
set /p input= Input number:
ECHO.
if %input%==1 goto A
if %input%==2 goto B
if %input%==3 goto C
ECHO Incorrect value!
ECHO.
ECHO Press any key to go back.
pause >nul
cls
goto start1
:A
ECHO Choosen NORMAL
set x=-mx=5
set y=Normal
goto P1
:B
ECHO Choosen HIGH
set x=-mx=7
set y=High
goto P1
:C
ECHO Choosen ULTRA
set x=-mx=9
set y=Ultra
goto P1
:P1
ECHO Start compressing process:
REM Start time counting
set StartTime=%time:~-0,8%
set StTi0=%StartTime: =0%
REM Start unpacking process
set ROOTDIR=%CD%
ECHO.
ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip [*%y%]...
for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do (
REM Set file attribute to "read+write"
ATTRIB -R "%%F"
ECHO.
ECHO Found %%F to recompress
REM Extract archive to folder "contents"
"%r%\7z" x "%%F" -o"%%F contents" | findstr /I "archive everything"
REM Check if 7zip created the folder correctly
if exist "%%~fF contents" (
REM Change directory for 7zip
CD "%%~fF contents"
REM Start packing process
"%r%\7z" a -t7z "../%%~nF.7z" * %x% | findstr /I "archive everything"
CD "%ROOTDIR%"
REM Delete the temporary "contents" folder
RMDIR "%%~fF contents" /S /Q
ECHO.
REM Start searching for the old archive
for /R %%F in (*.rar *.zip) do (
REM Check if its a copy - delete old archive
if exist "%%~pnF.7z" (
DEL "%%F" /F /Q
ECHO Deleting old archive %%~nxF...
)
)
ECHO Recompressed %%~nxF to %%~nF.7z [*%y%]
)
)
REM Finish time counting
set FinishTime=%time:~-0,8%
set FiTi0=%FinishTime: =0%
REM Counting time process - calculating time in hh:mm:ss format - send seconds
setlocal enabledelayedexpansion
call:timecalc %StTi0% StT
call:timecalc %FiTi0% FiT
call:difference %StT% %FiT%
ECHO.
ECHO Search ended.
REM Print counted time
ECHO All done. Wasted time: %d%
endlocal
pause
EXIT
REM Counting time process - seconds serialize
:timecalc
set "x=%~1"
set /a "%2=%x:~0,2%*3600+%x:~3,2%*60+%x:~6,2%"
EXIT /b
REM Counting time process - seconds deserialize
:difference
set /a "d=%~2-%~1"
set /a "hh=d/3600","mm=d/60%%60","ss=d%%60"
set "d="
for %%i in (%hh% %mm% %ss%) do (
if %%i lss 10 (set "d=!d!0%%i:") else (set "d=!d!%%i:"))
set "d=!d:~,-1!"
EXIT /b
pause
Цитата: Павел от 08.01.2025, 01:25Как говориться лучше довести чем подвести...
Добавил исправления и улучшения:
- добавил поддержку портативного режима, он подхватывается первым - помещаем 7z.exe и 7z.dll в каталог с батником
- ищет установку 7-Zip (еще каталоги и реестры)
- добавил проверки на старые версии Windows и 7-Zip
- переделал вывод данных - еще меньше ненужной информации, оставил только полезную
- показывает количество файлов, размер каждого до и после, прогресс, временя начала, затраченное время
- ввёл базовые проверки и алармы по работе с каталогами
- заменил логику подсчета времени - теперь нет ошибок вычисления
- переписал скрипт заново
Пока что не сделал, но есть идеи:
- работа с многотомными архивами
- еще больше проверок создания архивов для стабильности
- добавление звуковых уведомлений
- сделать .exe программу
[spoiler title="7zUltra_recompressor_beta3.bat"]
@ECHO OFF REM 7zUltra_recompressor - simple batch-utility to recompress and replace .zip, .rar, .7z files in the current directory and subfolders into 7zip with better compression level REM Need to install latest version of 7-Zip (supports both x86 and x64) REM Author MarineSolder REM Time counting script by Mike Q color F1 title 7zUltra_recompressor_beta3 :check0 set portable=no REM Check for Windows version ver | findstr /i "5\.0\." && goto fail0 ver | findstr /i "5\.1\." && goto fail0 ver | findstr /i "5\.2\." && goto fail0 ver | findstr /i "6\.0\." > nul && goto fail0 REM Check for WMIC if not exist "%SystemRoot%\System32\wbem\WMIC.exe" color F4&ECHO WMI COMMAND-LINE UTILITY (WMIC) is missing! Please fix it before start using 7zUltra_recompressor&pause >nul&EXIT REM Check for portable mode if exist "%cd%\7z.exe" (if exist "%cd%\7z.dll" set path1=%cd%\&set portable=yes&goto check2) REM If not found - quick check for 7-Zip install folder if exist "%ProgramFiles%\7-Zip\7z.exe" set path1=%ProgramFiles%\7-Zip\&goto check2 if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" set path1=%ProgramFiles(x86)%\7-Zip\&goto check2 REM If not found - try to check registry reg query "HKLM\SOFTWARE\7-Zip" /V "Path64" >nul 2>&1 if "%errorlevel%"=="0" (for /F "tokens=2*" %%I in ('2^> nul reg query "HKLM\SOFTWARE\7-Zip" /V Path64') do set path1=%%J&goto check1) reg query "HKLM\SOFTWARE\7-Zip" /V "Path" >nul 2>&1 if "%errorlevel%"=="0" (for /F "tokens=2*" %%I in ('2^> nul reg query "HKLM\SOFTWARE\7-Zip" /V Path') do set path1=%%J&goto check1) goto fail1 :check1 REM Check received registry data for 7-Zip location if exist "%path1%7z.exe" goto check2 goto fail1 :fail0 REM Windows version is not supported cls color F4&ECHO Your Windows version is too old! Not supported pause >nul&EXIT :fail1 REM No 7-Zip install folder found cls color F4&ECHO No 7-Zip installation folder found... &ECHO Need to install 7-Zip 16.04 or later pause >nul&EXIT :fail2 REM Version check negative cls color F4&ECHO Your 7-Zip version is too old! Need to install 7-Zip 16.04 or later pause >nul&EXIT :check2 cls REM Convert filepath to UNC format set "path0=%path1:\=\\%7z.exe" REM Get 7-Zip version number from .exe for /F "usebackq skip=1" %%? in (`wmic datafile where "name='%path0%'" get version 2^>nul`) do call :check3 %%? pause >nul :check3 set "ver0=%1" REM Check 7-Zip version number for /F "tokens=1,2,3,4 delims=." %%a in ("%ver0%") do (set major=%%a&set minor=%%b) if %major% leq 16 (if %minor% lss 4 (goto fail2)) if %major% leq 24 (if %minor% lss 9 powershell write-host -foregroundcolor DarkYellow "Recommend to update 7-Zip to version 24.09 or later") REM Print full 7-Zip version "%path1%7z" l "%path1%7z.exe" | findstr /b 7-Zip REM Portable mode? if %portable%==yes powershell write-host -foregroundcolor DarkGreen "PORTABLE MODE" goto menu1 :menu1 REM Menu option ECHO. &ECHO Choose compression level: &ECHO. ECHO 1 - Normal ECHO 2 - Maximum ECHO 3 - Ultra ECHO. &set /p input=Input number: &ECHO. if %input%==1 goto choice1 if %input%==2 goto choice2 if %input%==3 goto choice3 ECHO Incorrect value! &ECHO. &ECHO Press any key to go back. pause >nul&cls&goto check2 :choice1 REM Menu choice 1 ECHO Choosen NORMAL set settings=-mx=5&set complevel=Normal goto program1 :choice2 REM Menu choice 2 ECHO Choosen MAXIMUM set settings=-mx=7&set complevel=Maximum goto program1 :choice3 REM Menu choice 3 ECHO Choosen ULTRA set settings=-mx=9&set complevel=Ultra goto program1 :program1 REM Start working with files ECHO. &ECHO Start compressing process: REM Start time counting set STARTTIME=%TIME% set _time=%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% ECHO Started at: %_time% REM Start searching process set ROOTDIR=%CD% ECHO. &ECHO Set working direcory %ROOTDIR% ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip [*%complevel%]... REM Count found files @for /f %%a in ('2^>nul dir "*.7z" "*.rar" "*.zip" /A:-D /S /B ^| find /V /C ""') do set n=%%a @echo Number of files found: %n%. REM Print found file for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do ( ECHO. &ECHO Found %%F REM Always set file attribute to "read+write" attrib -r "%%F" REM Start unpacking process to folder "#temp#" "%path1%7z" x "%%F" -aoa -o"%%F #temp#" -bso0 -bse0 -bsp1 "%path1%7z" l "%%F" -bse0 | findstr Physical REM Check if 7-Zip created the folder if not exist "%%~fF #temp#" powershell write-host -foregroundcolor DarkRed "Warning! Cannot create folder '#temp#'!" if exist "%%~fF #temp#" ( REM Change directory for 7-Zip cd "%%~fF #temp#" REM Start packing process "%path1%7z" a -t7z "../%%~nF.7z" * %settings% -bso0 -bse0 -bsp1 REM Check if 7-Zip created the file if not exist "%%F" powershell write-host -foregroundcolor DarkRed "Warning! New file "%%F" not found!" if exist "%%F" ECHO Recompressed to %%~nF.7z [*%complevel%] "%path1%7z" l "../%%~nF.7z" -bse0 | findstr Physical REM Delete the temporary "#temp#" folder cd "%ROOTDIR%" rmdir "%%~fF #temp#" /s /q REM Check if 7-Zip leaves .7z.tmp* service files - delete .7z.tmp* if exist "%%~pnF.7z.tmp*" del "%%~pnF.7z.tmp*" /f /q REM Start searching for the old archive for /R %%F in (*.rar *.zip) do ( REM Check if its a copy - delete old archive if exist "%%~pnF.7z" del "%%F" /f /q &ECHO Deleting old archive %%~nxF... ) ) ) REM Finish time counting set ENDTIME=%TIME% REM Counting time process - change fraction part for non-English localizations set STARTTIME=%STARTTIME:,=.% set ENDTIME=%ENDTIME:,=.% REM Counting time process - change formatting for the start and end times for /F "tokens=1-4 delims=:.," %%a in ("%STARTTIME%") do (set /A "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100") for /F "tokens=1-4 delims=:.," %%a in ("%ENDTIME%") do ( if %ENDTIME% GTR %STARTTIME% set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100" if %ENDTIME% LSS %STARTTIME% set /A "end=((((%%a+24)*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100" ) REM Calculate the elapsed time by subtracting values set /A elapsed=end-start REM Counting time process - format the results for output set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100 if %hh% lss 10 set hh=0%hh% if %mm% lss 10 set mm=0%mm% if %ss% lss 10 set ss=0%ss% if %cc% lss 10 set cc=0%cc% set DURATION=%hh%:%mm%:%ss%,%cc% REM Print counted time ECHO. &ECHO Search ended. &ECHO All done. Wasted time: %DURATION% pause EXIT[/spoiler]
Как говориться лучше довести чем подвести...
Добавил исправления и улучшения:
- добавил поддержку портативного режима, он подхватывается первым - помещаем 7z.exe и 7z.dll в каталог с батником
- ищет установку 7-Zip (еще каталоги и реестры)
- добавил проверки на старые версии Windows и 7-Zip
- переделал вывод данных - еще меньше ненужной информации, оставил только полезную
- показывает количество файлов, размер каждого до и после, прогресс, временя начала, затраченное время
- ввёл базовые проверки и алармы по работе с каталогами
- заменил логику подсчета времени - теперь нет ошибок вычисления
- переписал скрипт заново
Пока что не сделал, но есть идеи:
- работа с многотомными архивами
- еще больше проверок создания архивов для стабильности
- добавление звуковых уведомлений
- сделать .exe программу
@ECHO OFF
REM 7zUltra_recompressor - simple batch-utility to recompress and replace .zip, .rar, .7z files in the current directory and subfolders into 7zip with better compression level
REM Need to install latest version of 7-Zip (supports both x86 and x64)
REM Author MarineSolder
REM Time counting script by Mike Q
color F1
title 7zUltra_recompressor_beta3
:check0
set portable=no
REM Check for Windows version
ver | findstr /i "5\.0\." && goto fail0
ver | findstr /i "5\.1\." && goto fail0
ver | findstr /i "5\.2\." && goto fail0
ver | findstr /i "6\.0\." > nul && goto fail0
REM Check for WMIC
if not exist "%SystemRoot%\System32\wbem\WMIC.exe" color F4&ECHO WMI COMMAND-LINE UTILITY (WMIC) is missing! Please fix it before start using 7zUltra_recompressor&pause >nul&EXIT
REM Check for portable mode
if exist "%cd%\7z.exe" (if exist "%cd%\7z.dll" set path1=%cd%\&set portable=yes&goto check2)
REM If not found - quick check for 7-Zip install folder
if exist "%ProgramFiles%\7-Zip\7z.exe" set path1=%ProgramFiles%\7-Zip\&goto check2
if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" set path1=%ProgramFiles(x86)%\7-Zip\&goto check2
REM If not found - try to check registry
reg query "HKLM\SOFTWARE\7-Zip" /V "Path64" >nul 2>&1
if "%errorlevel%"=="0" (for /F "tokens=2*" %%I in ('2^> nul reg query "HKLM\SOFTWARE\7-Zip" /V Path64') do set path1=%%J&goto check1)
reg query "HKLM\SOFTWARE\7-Zip" /V "Path" >nul 2>&1
if "%errorlevel%"=="0" (for /F "tokens=2*" %%I in ('2^> nul reg query "HKLM\SOFTWARE\7-Zip" /V Path') do set path1=%%J&goto check1)
goto fail1
:check1
REM Check received registry data for 7-Zip location
if exist "%path1%7z.exe" goto check2
goto fail1
:fail0
REM Windows version is not supported
cls
color F4&ECHO Your Windows version is too old! Not supported
pause >nul&EXIT
:fail1
REM No 7-Zip install folder found
cls
color F4&ECHO No 7-Zip installation folder found... &ECHO Need to install 7-Zip 16.04 or later
pause >nul&EXIT
:fail2
REM Version check negative
cls
color F4&ECHO Your 7-Zip version is too old! Need to install 7-Zip 16.04 or later
pause >nul&EXIT
:check2
cls
REM Convert filepath to UNC format
set "path0=%path1:\=\\%7z.exe"
REM Get 7-Zip version number from .exe
for /F "usebackq skip=1" %%? in (`wmic datafile where "name='%path0%'" get version 2^>nul`) do call :check3 %%?
pause >nul
:check3
set "ver0=%1"
REM Check 7-Zip version number
for /F "tokens=1,2,3,4 delims=." %%a in ("%ver0%") do (set major=%%a&set minor=%%b)
if %major% leq 16 (if %minor% lss 4 (goto fail2))
if %major% leq 24 (if %minor% lss 9 powershell write-host -foregroundcolor DarkYellow "Recommend to update 7-Zip to version 24.09 or later")
REM Print full 7-Zip version
"%path1%7z" l "%path1%7z.exe" | findstr /b 7-Zip
REM Portable mode?
if %portable%==yes powershell write-host -foregroundcolor DarkGreen "PORTABLE MODE"
goto menu1
:menu1
REM Menu option
ECHO. &ECHO Choose compression level: &ECHO.
ECHO 1 - Normal
ECHO 2 - Maximum
ECHO 3 - Ultra
ECHO. &set /p input=Input number: &ECHO.
if %input%==1 goto choice1
if %input%==2 goto choice2
if %input%==3 goto choice3
ECHO Incorrect value! &ECHO. &ECHO Press any key to go back.
pause >nul&cls&goto check2
:choice1
REM Menu choice 1
ECHO Choosen NORMAL
set settings=-mx=5&set complevel=Normal
goto program1
:choice2
REM Menu choice 2
ECHO Choosen MAXIMUM
set settings=-mx=7&set complevel=Maximum
goto program1
:choice3
REM Menu choice 3
ECHO Choosen ULTRA
set settings=-mx=9&set complevel=Ultra
goto program1
:program1
REM Start working with files
ECHO. &ECHO Start compressing process:
REM Start time counting
set STARTTIME=%TIME%
set _time=%TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
ECHO Started at: %_time%
REM Start searching process
set ROOTDIR=%CD%
ECHO. &ECHO Set working direcory %ROOTDIR%
ECHO Searching for 7z, RAR and ZIP files to recompress into 7zip [*%complevel%]...
REM Count found files
@for /f %%a in ('2^>nul dir "*.7z" "*.rar" "*.zip" /A:-D /S /B ^| find /V /C ""') do set n=%%a
@echo Number of files found: %n%.
REM Print found file
for /R "%ROOTDIR%" %%F in (*.7z *.rar *.zip) do (
ECHO. &ECHO Found %%F
REM Always set file attribute to "read+write"
attrib -r "%%F"
REM Start unpacking process to folder "#temp#"
"%path1%7z" x "%%F" -aoa -o"%%F #temp#" -bso0 -bse0 -bsp1
"%path1%7z" l "%%F" -bse0 | findstr Physical
REM Check if 7-Zip created the folder
if not exist "%%~fF #temp#" powershell write-host -foregroundcolor DarkRed "Warning! Cannot create folder '#temp#'!"
if exist "%%~fF #temp#" (
REM Change directory for 7-Zip
cd "%%~fF #temp#"
REM Start packing process
"%path1%7z" a -t7z "../%%~nF.7z" * %settings% -bso0 -bse0 -bsp1
REM Check if 7-Zip created the file
if not exist "%%F" powershell write-host -foregroundcolor DarkRed "Warning! New file "%%F" not found!"
if exist "%%F" ECHO Recompressed to %%~nF.7z [*%complevel%]
"%path1%7z" l "../%%~nF.7z" -bse0 | findstr Physical
REM Delete the temporary "#temp#" folder
cd "%ROOTDIR%"
rmdir "%%~fF #temp#" /s /q
REM Check if 7-Zip leaves .7z.tmp* service files - delete .7z.tmp*
if exist "%%~pnF.7z.tmp*" del "%%~pnF.7z.tmp*" /f /q
REM Start searching for the old archive
for /R %%F in (*.rar *.zip) do (
REM Check if its a copy - delete old archive
if exist "%%~pnF.7z" del "%%F" /f /q &ECHO Deleting old archive %%~nxF...
)
)
)
REM Finish time counting
set ENDTIME=%TIME%
REM Counting time process - change fraction part for non-English localizations
set STARTTIME=%STARTTIME:,=.%
set ENDTIME=%ENDTIME:,=.%
REM Counting time process - change formatting for the start and end times
for /F "tokens=1-4 delims=:.," %%a in ("%STARTTIME%") do (set /A "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100")
for /F "tokens=1-4 delims=:.," %%a in ("%ENDTIME%") do (
if %ENDTIME% GTR %STARTTIME% set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
if %ENDTIME% LSS %STARTTIME% set /A "end=((((%%a+24)*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)
REM Calculate the elapsed time by subtracting values
set /A elapsed=end-start
REM Counting time process - format the results for output
set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100
if %hh% lss 10 set hh=0%hh%
if %mm% lss 10 set mm=0%mm%
if %ss% lss 10 set ss=0%ss%
if %cc% lss 10 set cc=0%cc%
set DURATION=%hh%:%mm%:%ss%,%cc%
REM Print counted time
ECHO. &ECHO Search ended. &ECHO All done. Wasted time: %DURATION%
pause
EXIT
Цитата: Павел от 12.01.2025, 09:53Потихоньку это дело переросло в .exe программу...
[spoiler title="Описание:"]
7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в 7zip с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.
Принцип работы:
- Переносим программу на диск или в папку где лежат все интересующие нас архивы.
- Запускаем программу - программа работает только вглубь (вместе с подкаталогами) обрабатывая каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX
- Выбираем один из трех степеней компрессии - уровни имеют плавающую настройку величины словаря в зависимости от архивов. Если у вас не "картошкаПК" то всегда выбираем Ultra
- Процесс разбит на три этапа:
- проверка дубликатов архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить
конвертация многотомных архивов в однотомные - метод Copy (он же Store)- перепаковка однотомных архивов с выбранным уровнем сжатия
- В процессе все временные папки с файлами удалятся. Получившиеся архивы .7z замещают старые архивы.
- В конце подсчет количество операций, затраченное время и количество ошибок.
[/spoiler]
[spoiler title="Системные требования:"]
ОС: Windows 7 (x86 & x64) и выше - рекомендуется Windows 10 22H1 (x64) и выше
7-Zip: 16.04 (x86 & x64) и выше - рекомендуется 24.09 (x64) и вышеЦП: Чем жирнее тем лучше
ОЗУ минимум: от 6 Гб
ОЗУ рекомендуется*: от 8 Гб - для Normal, от 24 Гб - для Ultra
*7-Zip 24.09 (x64) и выше - рекомендуемые параметры для оптимальной скоростиВ теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня ULTRA) - проверена производительность вплоть до 48 потоков и 128 Гб ОЗУ
[/spoiler][spoiler title="Добавил исправления и улучшения:"]
beta5
- больше проверок на соответствие минимальным системным требованиям
- составил подбор потоков 7-Zip в соответствии от количества ОЗУ, количества потоков ЦП и выбранной степени сжатия - меньше шанс получить ошибку переполнения памяти, при этом сохраняя оптимальную производительность
- еще оптимизировал вывод данных в окно
- исправил много мелких ошибок в коде который отвечает когда что-то идет не по плану
- добавил базовые проверки на каждом этапе работы с файлами
- добавил вывод алармов прописанных вручную (с использованием простых проверок if exist / if not exist, а также с использованием errorlevel от 7-Zip
- подсчет количество операций и количество ошибок
- добавил проверку на дубликаты архивов в одной и той же папке
- добавил обработку многотомных архивов
- добавил "начальную страницу" с напоминаем закрыть все архивы и архиваторы перед началом работы утилиты
- добавил базовые звуковые уведомления
- нарисовал иконку для программы
- собрал в .exe
[/spoiler]
По прежнему использовать только для тестирования!
Потихоньку это дело переросло в .exe программу...
7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в 7zip с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.
Принцип работы:
конвертация многотомных архивов в однотомные - метод Copy (он же Store)
ОС: Windows 7 (x86 & x64) и выше - рекомендуется Windows 10 22H1 (x64) и выше ЦП: Чем жирнее тем лучше В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня ULTRA) - проверена производительность вплоть до 48 потоков и 128 Гб ОЗУ
7-Zip: 16.04 (x86 & x64) и выше - рекомендуется 24.09 (x64) и выше
ОЗУ минимум: от 6 Гб
ОЗУ рекомендуется*: от 8 Гб - для Normal, от 24 Гб - для Ultra
*7-Zip 24.09 (x64) и выше - рекомендуемые параметры для оптимальной скорости
beta5
По прежнему использовать только для тестирования!
Цитата: Павел от 14.01.2025, 08:40
beta6
СкачатьПоигравшись с настройками сжатия 7-Zip 24.09 сделал небольшие дополнения.
Добавил новый пресет Super Ultra - самый жесткий вариант, для тех случаев когда есть много времени и большое желание выжать максимум. Всё-таки придерживался здравого смысла и этот пресет не использует методы с десятками проходов и фильтров, поэтому скорость какая-никакая есть.[spoiler title="Описание:"]
7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.
Принцип работы:
- Переносим программу на диск или в папку где лежат все интересующие нас архивы.
- Запускаем программу - программа работает только вглубь (вместе с подкаталогами) обрабатывая каждый однотомный архив *.7z, *.rar, *.zip, а также многотомные *.7z.XXX, *.rar.XXX, *.rXX, *partX.rar, *partXX.rar, *partXXX.rar, *.zip.XXX, *.zXX
- Выбираем один из четырех степеней компрессии - уровни имеют плавающую настройку величины словаря в зависимости от архивов. Количество потоков выбирается исходя из условий
- Процесс разбит на три этапа:
- проверка идентичных имен архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить
- конвертация многотомных архивов в однотомные - метод Copy (он же Store)
- перепаковка однотомных архивов с выбранным уровнем сжатия
- В процессе все временные папки с файлами удалятся. Получившиеся архивы .7z замещают старые архивы
- В конце подсчет количество операций, затраченное время и количество ошибок.
[/spoiler]
[spoiler title="Системные требования:"]
ОС: 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 Гб ОЗУ
[/spoiler]
[spoiler title="Добавил исправления и улучшения:"]
- убрал поддержку Windows (x86) и 7-Zip (x86), т.к. это было для тестирования - теперь только Windows (x64) и 7-Zip (x64)
- добавил кастомный пресет Super Ultra - требуется от 24 ГБ ОЗУ
- исправил ошибку - при запуске из каталога имеющего скобки ( ) в названии, программа падала
- переосмыслил логотип
[/spoiler]
[spoiler title="Баги:"]
- только при обработке многотомных архивов - если на пути есть проблемные символы ! @ & переименования не произойдет (к примеру получившийся *.7z.7z в *.7z) - однако все остальные операции должны пройти успешно
- при определённых условиях вместо ошибки записи архива всплывает ошибка от PowerShell - однако счетчик ошибок срабатывает корректно
[/spoiler]
По-прежнему использовать только для тестирования!
|
beta6 |
Поигравшись с настройками сжатия 7-Zip 24.09 сделал небольшие дополнения. Описание: 7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.
Системные требования: ОС: Windows 7 (x64) и выше - рекомендуется Windows 10 19H1 (x64) и выше ЦП: Чем жирнее тем лучше В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) - проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ Добавил исправления и улучшения:
Баги:
По-прежнему использовать только для тестирования! |
Цитата: Павел от 24.01.2025, 00:42
В процессе исправлений и добавлений новых функций - beta7 была запорота. Поэтому сразу за ней идет beta8, где я переписал весь код построчно.
Добавил немного новых функций. Долго не мог обойти проблему переименования многотомного архива в однотомный если есть спец спецсимволы. Вроде победил, однако нужно еще тестировать, особенно если балуетесь с паровозами в названиях файлов типа *.7z.7z.7z...
Несмотря на то что присутствуют проверки через WMIC и Powershell, которые в некоторых случаях занимают до 50мс на процесс - сама программа работает достаточно быстро.
7z Ultra Recompressorbeta8
Скачать[spoiler title="Описание:"]
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.
- Одна из четырех степеней компрессии - уровни имеют плавающую настройку величины словаря в зависимости от архивов. Количество потоков выбирается также исходя из условий.
- Процесс разбит на три этапа:
- проверка идентичных имен архивов в одной и той же папке, с выводом аларма - ситуация когда за вас никто не примет решения какой архив оставить;
- конвертация многотомных архивов в однотомные - метод Copy (он же Store);
- перепаковка однотомных архивов с выбранным уровнем сжатия.
- В конце подсчет количество операций, затраченное время и количество ошибок.
- По завершению, если нет критических ошибок, все временные папки с файлами удалятся. Получившиеся архивы .7z замещают старые архивы.
[/spoiler]
[spoiler title="Системные требования:"]
ОС: 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 Гб ОЗУ.
[/spoiler]
[spoiler title="Добавил исправления и улучшения:"]
- Переосмыслил процессы, немного поменял последовательность операций внутри циклов.
- Причесал все алармы и их последовательность сверки.
- Заменил вывод алармов - вместо Powershell теперь использую Command-line colored ECHO processor (CECHO) by LoRd_MuldeR.
- Переименование теперь производится в обход всех костылей - с помощью сторонней утилиты Command-line rename tool (BRC32) by Jim Willsher.
- Добавил проверку на уже запущенный процесс 7z Ultra Recompressor - разрешено использовать только один процесс, во избежании потенциальных проблем.
- Добавил диалоговое окно выбора директорий - теперь можно запускать программу из любого места.
- Добавил сравнение CRC32 внутренностей старого и нового архивов - чтобы все было по-серьезному.
- Исправил мелкие ошибки.
[/spoiler]
[spoiler title="Баги:"]
Пока известные баги мною не выявлены...
Однако для отслеживания происходящих процессов рекомендую использовать directory watcher, по типу Folder Changes View от NirSoft.[/spoiler]
По-прежнему использовать только для тестирования!
| В процессе исправлений и добавлений новых функций - beta7 была запорота. Поэтому сразу за ней идет beta8, где я переписал весь код построчно. Добавил немного новых функций. Долго не мог обойти проблему переименования многотомного архива в однотомный если есть спец спецсимволы. Вроде победил, однако нужно еще тестировать, особенно если балуетесь с паровозами в названиях файлов типа *.7z.7z.7z... Несмотря на то что присутствуют проверки через WMIC и Powershell, которые в некоторых случаях занимают до 50мс на процесс - сама программа работает достаточно быстро. |
|
|
beta8 |
Описание: 7z Ultra Recompressor - мини-утилита для автоматического пересжатия большого количества архивов .7z, .rar, .zip в новый .7z с высокой компрессией. В основе лежит идея создать максимально простой и в то же время надежный инструмент.
Системные требования: ОС: Windows 7 (x64) и выше - рекомендуется Windows 10 19H1 (x64) и выше ЦП: Чем жирнее тем лучше В теории, с новыми версиями 7-Zip практически нет потолка по железу (для уровня Ultra) - проверена производительность вплоть до 48 потоков (AVX2) и 128 Гб ОЗУ. Добавил исправления и улучшения:
Баги: Пока известные баги мною не выявлены... По-прежнему использовать только для тестирования! |
Цитата: syfle от 24.01.2025, 20:06Привет. Выявил баг на бета8, у меня есть папки с модами для игр и я решил сначала посмотреть результат на одной из папок \моды\игра2, все прошло успешно, потом я решил перепаковать все архивы соответственно по пути \моды. Программа обработала \моды\игра1 затем застряла на \моды\игра2, которую уже обрабатывала и гоняет их по кругу постоянно перепаковывая. Использовал метод сжатия Ultra.
Привет. Выявил баг на бета8, у меня есть папки с модами для игр и я решил сначала посмотреть результат на одной из папок \моды\игра2, все прошло успешно, потом я решил перепаковать все архивы соответственно по пути \моды. Программа обработала \моды\игра1 затем застряла на \моды\игра2, которую уже обрабатывала и гоняет их по кругу постоянно перепаковывая. Использовал метод сжатия Ultra.
Цитата: syfle от 24.01.2025, 20:34Я попробовал еще одну папку... программа просто так начала заново перепаковывать один и тот же архив, папку до этого я ей не трогал
Я попробовал еще одну папку... программа просто так начала заново перепаковывать один и тот же архив, папку до этого я ей не трогал
Цитата: Павел от 24.01.2025, 20:37Цитата: syfle от 24.01.2025, 20:06и гоняет их по кругу постоянно перепаковывая
Добрый!
Вообще пока нет проверки на обработку уже пройденных файлов.
На моменте захода на повторный круг, можешь нажать "пробел" во время перепаковки - 7-Zip встанет на паузу, и сохрани лог окна.Делается так:
- выбираешь окно программы
- Ctrl+A , Ctrl+C
- вставляешь в блокнот
Цитата: syfle от 24.01.2025, 20:06и гоняет их по кругу постоянно перепаковывая
Добрый!
Вообще пока нет проверки на обработку уже пройденных файлов.
На моменте захода на повторный круг, можешь нажать "пробел" во время перепаковки - 7-Zip встанет на паузу, и сохрани лог окна.
Делается так:
- выбираешь окно программы
- Ctrl+A , Ctrl+C
- вставляешь в блокнот
Цитата: Павел от 24.01.2025, 21:07Цитата: syfle от 24.01.2025, 20:34Я попробовал еще одну папку... программа просто так начала заново перепаковывать один и тот же архив, папку до этого я ей не трогал
Увидел скриншот, надо подумать
Цитата: syfle от 24.01.2025, 20:34Я попробовал еще одну папку... программа просто так начала заново перепаковывать один и тот же архив, папку до этого я ей не трогал
Увидел скриншот, надо подумать
Цитата: syfle от 24.01.2025, 21:35Павел, [spoiler title="на всякий"]
7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29 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' Want to START? [Y/N] Y Start process: Started at: 21:27:55 __________________________________________________________________________________________ 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): 34 Recompressing single-volume archives into 7z [*Ultra]... Found 'E:\Mods\English-Russian Databases.7z' Physical Size = 21385051 Method = LZMA2:192m Recompressed into 'English-Russian Databases.7z' [*Ultra] Physical Size = 21385051 Method = LZMA2:192m CRC32 values match Found 'E:\Mods\ESP-ESM Translator.7z' Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 Recompressed into 'ESP-ESM Translator.7z' [*Ultra] Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 CRC32 values match Found 'E:\Mods\English-Russian Databases.7z' Physical Size = 21385051 Method = LZMA2:192m Recompressed into 'English-Russian Databases.7z' [*Ultra] Physical Size = 21385051 Method = LZMA2:192m CRC32 values match Found 'E:\Mods\ESP-ESM Translator.7z' Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 Recompressed into 'ESP-ESM Translator.7z' [*Ultra] Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 CRC32 values match Found 'E:\Mods\English-Russian Databases.7z' Physical Size = 21385051 Method = LZMA2:192m Recompressed into 'English-Russian Databases.7z' [*Ultra] Physical Size = 21385051 Method = LZMA2:192m CRC32 values match Found 'E:\Mods\ESP-ESM Translator.7z' Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 Recompressed into 'ESP-ESM Translator.7z' [*Ultra] Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 CRC32 values match Found 'E:\Mods\English-Russian Databases.7z' Physical Size = 21385051 Method = LZMA2:192m Recompressed into 'English-Russian Databases.7z' [*Ultra] Physical Size = 21385051 Method = LZMA2:192m CRC32 values match Found 'E:\Mods\ESP-ESM Translator.7z' Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 Recompressed into 'ESP-ESM Translator.7z' [*Ultra] Physical Size = 14669313 Method = LZMA2:192m LZMA:20 BCJ2 CRC32 values match Found 'E:\Mods\English-Russian Databases.7z' Physical Size = 21385051 Method = LZMA2:192m Recompressed into 'English-Russian Databases.7z' [*Ultra] Physical Size = 21385051 Method = LZMA2:192m[/spoiler]
7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
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'
Want to START? [Y/N] Y
Start process:
Started at: 21:27:55
__________________________________________________________________________________________
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): 34
Recompressing single-volume archives into 7z [*Ultra]...
Found 'E:\Mods\English-Russian Databases.7z'
Physical Size = 21385051
Method = LZMA2:192m
Recompressed into 'English-Russian Databases.7z' [*Ultra]
Physical Size = 21385051
Method = LZMA2:192m
CRC32 values match
Found 'E:\Mods\ESP-ESM Translator.7z'
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
Recompressed into 'ESP-ESM Translator.7z' [*Ultra]
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
CRC32 values match
Found 'E:\Mods\English-Russian Databases.7z'
Physical Size = 21385051
Method = LZMA2:192m
Recompressed into 'English-Russian Databases.7z' [*Ultra]
Physical Size = 21385051
Method = LZMA2:192m
CRC32 values match
Found 'E:\Mods\ESP-ESM Translator.7z'
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
Recompressed into 'ESP-ESM Translator.7z' [*Ultra]
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
CRC32 values match
Found 'E:\Mods\English-Russian Databases.7z'
Physical Size = 21385051
Method = LZMA2:192m
Recompressed into 'English-Russian Databases.7z' [*Ultra]
Physical Size = 21385051
Method = LZMA2:192m
CRC32 values match
Found 'E:\Mods\ESP-ESM Translator.7z'
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
Recompressed into 'ESP-ESM Translator.7z' [*Ultra]
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
CRC32 values match
Found 'E:\Mods\English-Russian Databases.7z'
Physical Size = 21385051
Method = LZMA2:192m
Recompressed into 'English-Russian Databases.7z' [*Ultra]
Physical Size = 21385051
Method = LZMA2:192m
CRC32 values match
Found 'E:\Mods\ESP-ESM Translator.7z'
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
Recompressed into 'ESP-ESM Translator.7z' [*Ultra]
Physical Size = 14669313
Method = LZMA2:192m LZMA:20 BCJ2
CRC32 values match
Found 'E:\Mods\English-Russian Databases.7z'
Physical Size = 21385051
Method = LZMA2:192m
Recompressed into 'English-Russian Databases.7z' [*Ultra]
Physical Size = 21385051
Method = LZMA2:192m
Цитата: syfle от 25.01.2025, 00:57Ещё немного из опыта использования, если программа встречает архив с паролем, то начинает думать думу глубокую, я бы предложил либо насовсем пропускать такие архивы, либо скидывать их в конец очереди для последующего введения пароля пользователем. Portable режим [simple_tooltip content='7-Zip (x64) not found... Need to install 7-Zip 16.04 (x64) or later']не заработал[/simple_tooltip], 7z.exe и 7z.dll взяты из 7z2409-x64.exe c официального сайта.
А вообще в целом программа и идея замечательная, здорово сделал, мне нравится!
Ещё немного из опыта использования, если программа встречает архив с паролем, то начинает думать думу глубокую, я бы предложил либо насовсем пропускать такие архивы, либо скидывать их в конец очереди для последующего введения пароля пользователем. Portable режим не заработал, 7z.exe и 7z.dll взяты из 7z2409-x64.exe c официального сайта.
А вообще в целом программа и идея замечательная, здорово сделал, мне нравится!
Цитата: Павел от 25.01.2025, 17:44syfle,
Я никак не могу получить подобный баг у себя. Вижу что программа постоянно гоняет два архива, пока не знаю с чем это связано, возможно какой-то момент с файловой системой...Вопрос:
эти архивы .7z - это обычные файлы? не жесткие ссылки на файл? не имеют доп. атрибуты (архивный, скрытый)? Найдено 34 архива - там действительно столько в папке? Программа гоняет первые два архива и не переходит к следующим?
Попробуй для интереса beta3 (в виде bat) - ее надо запускать прямо из каталога, где лежат архивы.
syfle,
Я никак не могу получить подобный баг у себя. Вижу что программа постоянно гоняет два архива, пока не знаю с чем это связано, возможно какой-то момент с файловой системой...
Вопрос:
эти архивы .7z - это обычные файлы? не жесткие ссылки на файл? не имеют доп. атрибуты (архивный, скрытый)? Найдено 34 архива - там действительно столько в папке? Программа гоняет первые два архива и не переходит к следующим?
Попробуй для интереса beta3 (в виде bat) - ее надо запускать прямо из каталога, где лежат архивы.
Цитата: Павел от 25.01.2025, 17:47Цитата: syfle от 25.01.2025, 00:57Portable режим [simple_tooltip content='7-Zip (x64) not found... Need to install 7-Zip 16.04 (x64) or later']не заработал[/simple_tooltip], 7z.exe и 7z.dll взяты из 7z2409-x64.exe c официального сайта.
Этот момент поправлю, это я промахнулся с относительными ссылками при сборке программы. Когда программа "разложена" по частям - все работает. При сборке уже не проверил этот момент.
Цитата: syfle от 25.01.2025, 00:57Portable режим не заработал, 7z.exe и 7z.dll взяты из 7z2409-x64.exe c официального сайта.
Этот момент поправлю, это я промахнулся с относительными ссылками при сборке программы. Когда программа "разложена" по частям - все работает. При сборке уже не проверил этот момент.
