Пакетная перепаковка архивов в 7z с пользовательскими настройками

515
Ovaryraptor

Я работаю над архивированием и сжатием множества элементов дизайна, и они смешаны в файлы .zip и .rar.

После настройки и тестирования эти настройки, кажется, дают лучшие результаты для меня:

enter image description here

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

Тем не менее, .bat не будет работать.

Вот код, который у меня есть:

for %%F in (*.rar) do ( "C:\Program Files\7-Zip\7z.exe" x -y -o"%%F_tmp" "%%F" * & pushd %%F_tmp & "C:\Program Files\7-Zip\7z.exe" a -y -r -t7z -m0=lzma2 -mx=9 -mfb=128 -md=512m -mmt:on ..\"%%~nF".7z * & popd & rmdir /s /q "%%F_tmp" ) 

Кроме того, есть ли способ выполнить этот запуск на ОБА .zip и .rar из одного и того же .bat? Прямо сейчас у меня есть 2 версии.

1
Есть ли причина втиснуть его в одну строчку? Что не работает? Для обработки файлов обоих типов -> `для %% F в (* .rar * .zip) сделать ...` LotPings 5 лет назад 1
Пакетный файл у меня работает нормально, даже в одной строке, но я получаю `Системная ошибка: параметр неверен` во второй команде 7zip. Worthwelle 5 лет назад 0
@LotPings Я новичок в сценариях командной строки, и я не знал, куда вернуться. Ovaryraptor 5 лет назад 0

1 ответ на вопрос

2
LotPings

-mnt:onВариант просто так, по крайней мере, с моей7-Zip 18.05 (x64)

Эта партия:

:: Q:\Test\2018\10\11\SU_1365974.cmd @Echo off Set z7="C:\Program Files\7-Zip\7z.exe" Set "z7o=a -y -r -t7z -m0=lzma2 -mx=9 -mfb=128 -md=512m "  for %%F in (*.rar *.zip) do (  %z7% x -y -o"%%F_tmp" "%%F" * pushd %%F_tmp %z7% %z7o% ..\"%%~nF".7z * ||(pause) popd  rmdir /s /q "%%F_tmp" Rem del "%%F" ) 

(удалите Rem перед del, чтобы удалить исходный архивный файл).
Полученные результаты были получены для примеров zip-файлов, в основном из установки arduino.

> dir Datenträger in Laufwerk A: ist RamDisk Verzeichnis von A:\  2018-10-11 20:22 533.163 1802-064.7z 2018-01-27 15:38 535.890 1802-064.zip  2018-10-11 20:22 265.703 Adafruit_Circuit_Playground-1.6.9.7z 2017-10-21 18:06 408.442 Adafruit_Circuit_Playground-1.6.9.zip  2018-10-11 20:22 294.031 Adafruit_Circuit_Playground-1.8.0.7z 2018-03-09 19:39 472.998 Adafruit_Circuit_Playground-1.8.0.zip  2018-10-11 20:22 24.213 Adafruit_NeoPixel-1.1.3.7z 2017-11-30 20:26 36.399 Adafruit_NeoPixel-1.1.3.zip  2018-10-11 20:22 27.574 Adafruit_NeoPixel-1.1.6.7z 2018-03-09 19:39 40.682 Adafruit_NeoPixel-1.1.6.zip  2018-10-11 20:22 18.280 APA102-2.0.0.7z 2017-09-09 14:30 25.694 APA102-2.0.0.zip  2018-10-11 20:22 794 archive.7z 2018-09-24 14:13 1.582 archive.zip  2018-10-11 20:22 128.390 ArduinoJson-5.13.1.7z 2018-03-09 19:40 242.718 ArduinoJson-5.13.1.zip  2018-10-11 20:22 17.001 AS_BH1750-master.7z 2017-12-15 15:17 31.034 AS_BH1750-master.zip  2018-10-11 20:22 489.473 avrdude-6.3.0-arduino9-i686-w64-mingw32.7z 2017-11-23 20:43 645.974 avrdude-6.3.0-arduino9-i686-w64-mingw32.zip  2018-10-11 20:22 31.008 Bridge-1.7.0.7z 2018-01-05 22:14 61.431 Bridge-1.7.0.zip  2018-10-11 20:22 14.761 DallasTemperature-3.7.6.7z 2017-09-09 14:30 27.378 DallasTemperature-3.7.6.zip  2018-10-11 20:22 14.811 DallasTemperature-3.8.0.7z 2018-03-09 19:40 27.988 DallasTemperature-3.8.0.zip ========= ========= .7z .zip Cumulated size: 1.859.202 2.558.210 percent of the other 73% 138% 
Mmt: on должен был включить многопоточность. Или есть другой способ указать для использования 8/4 ядер? Ovaryraptor 5 лет назад 0
Если я читаю справку справа `-mmt [N]: установить количество потоков ЦП`, правильное использование` -mnt8` аналогично `-mx9` в ваших настройках. LotPings 5 лет назад 0
Так на mx9 он уже будет использовать максимальные потоки? Ovaryraptor 5 лет назад 0
Нет синтаксиса `-mx [N]: установить уровень сжатия: -mx1 (самый быстрый) ... -mx9 (ультра)` показывает, что `[n]` необходимо заменить на желаемое число. Как потоки процессора связаны с ядрами / сродством, это другой вопрос. LotPings 5 лет назад 0