Ru-Board.club
← Вернуться в раздел «Программы»

» 7-Zip / 7z (часть 2)

Автор: GORA2
Дата сообщения: 24.04.2012 13:08

Цитата:
Делается из батника

В батнике случаем нет строки ?

Код: SetLocal enabledelayedexpansion
Автор: VictorRee
Дата сообщения: 24.04.2012 14:08
Есть...
Автор: GORA2
Дата сообщения: 24.04.2012 14:17

Цитата:
Есть...

Вот и причина. В строке у Вас есть параметр со знаком восклицания (!), а он в этом режиме является "обрамителем" переменной наравне со знаком процента (%).
Выключайте "отложенную обработку переменных" перед строкой архивирования.
Автор: VictorRee
Дата сообщения: 24.04.2012 14:20
Нет слов! Как я тебе благодарен!!!!
А можно еще вопрос? В справке по ключу -u описаны экшены
0 Игнорировать файл (не создавайте пункт в новом архиве для этого файла)
1 Копировать файл (копируют из старого архива в новый)
2 Упаковать (сжимают файл с диска в новый архив)
3 Создать Анти-пункт (пункт, который удалит файл или каталог в ходе извлечения). Эта функция поддержана только в 7z формате.
Я не правильно походу понимаю экшен 0. Если условиевыполняется то по экшену 0 файл из архива удаляется, я думал что никакие действия производится не будут. Чтобы действия не производились надо ставить 1 ?
Автор: SAT31
Дата сообщения: 25.04.2012 12:26
Хотелось бы узнать, как с помощью программы (версия 9.20) распаковать инсталлятор программы и узнать измененные файлы от прошлой версии инсталлятора. Такое возможно?
Сейчас распаковал инсталл Your Uninstaller, соответственно все выглядит так:
http://dl.dropbox.com/u/70396812/Screenshot-318.jpg
и что дальше делать с этой батвой?
Автор: sasherb
Дата сообщения: 25.04.2012 12:37
SAT31

Цитата:
и что дальше делать с этой батвой?

Просто сабж распаковал ехешник на ресурсы а не на файлы.

Добавлено:
Лучше пользовать Universal Extractor
Автор: Victor_VG
Дата сообщения: 25.04.2012 15:06
SAT31

Воспользуйся связкой Far Manager 3.0 + Observer - плагин корректно декомпилит NSIS/MSI и увидишь не только файлы, но весь скрипт или БД MSI, а так же сможешь в неё войти просмотреть нужные файлы. Сам 7-Zip обычно в таких случая раскрывает ресурсы бинарника. А Universal Extractor это набор распаковщиков с оболочкой и он не всегда мне помогал - встречались ошибки выбора нужного, да и то, что он (сейчас не пользуюсь им) раньше вечно прописывался в оболочку куда ни попадя мне лично всегда мешало в работе. Far как файл-менеджер в этом смысле много удобнее, да и лишней дурью не страдает. Можно если надо взять просто архив с офсайта - там уже есть плагин arclite умеющий распаковывать инсталляторы сам - у него в поставке используется 7z.dll, и потому внешний 7-Zip ему не требуется.
Автор: ADSL3MD
Дата сообщения: 01.05.2012 03:20
Реально ли задать пароль содержащий в себе кавычку (") использую ключ "-p" ?

Пример пароля: 123"456

Пример командной строки:
setlocal
set _source=C:
set _dest=C:\1
set _password=123"456
set _zipath=c:\Program Files\7-zip
if not exist %_dest% md %_dest%
for %%I in (%_source%\*) do "%_zipath%\7z" a -mx=1 -m0=LZMA -p123"456 "%_dest%\%%~nI.7z" "%%I"
endlocal

Проблема: кавычка является системным/управляющим символом и её использование не по назначению приводит к ошибке в 7z - Incorrect command line.
Автор: Victor_VG
Дата сообщения: 01.05.2012 05:00
ADSL3MD

Номер и на UNIX системе на P7Zip не пройдёт - кавычка и там имеет чёткое смысловое значение.
Автор: Inoz2000
Дата сообщения: 01.05.2012 14:32
ADSL3MD
Код: setlocal
set _source=C:
set _dest=C:\1
set _password=123^^"456
set _zipath=c:\Program Files\7-zip
if not exist %_dest% md %_dest%
for %%I in (%_source%\*) do echo %_password%|"%_zipath%\7z.exe" a -p -mx=1 -m0=LZMA -- "%_dest%\%%~nI.7z" "%%I"
endlocal
Автор: ADSL3MD
Дата сообщения: 01.05.2012 16:46
Inoz2000
Браво! Интересное и неожиданное решение.

Узнал что:
1. Кавычка (") экранируется двумя символами (^)
2. Знак процента (%) экранируется двумя символами (%)
3. 7z предложит ввести пароль если ключ (-p) указан без значения.
Автор: Inoz2000
Дата сообщения: 01.05.2012 20:43
почувствуйте разницу
Код: setlocal
set _source=C:
set _dest=C:\1
set _zipath=c:\Program Files\7-zip
if not exist %_dest% md %_dest%
for %%I in (%_source%\*) do echo 123^"456|"%_zipath%\7z.exe" a -p -mx=1 -m0=LZMA -- "%_dest%\%%~nI.7z" "%%I"
endlocal
Автор: LonerDergunov
Дата сообщения: 04.05.2012 02:04
Имеется 7-Zip архив. Как узнать - сколько оперативной памяти требуется для его распаковки?
Автор: ADSL3MD
Дата сообщения: 04.05.2012 02:20
LonerDergunov
Предположение.
Если программа 7-Zip при распаковке архива, определяет нужное для этого количество оперативной памяти, то возможно результат решения вместе со способом его нахождения/вычисления написан в исходном тексте программы.
Можно вынести из него эти вычисления и сделать их в виде/форме внешней DLL с API и консольной программы их использующей.

Реальность.
Реализованные способы мне неизвестны.
Автор: Inoz2000
Дата сообщения: 04.05.2012 08:10
ADSL3MD, LonerDergunov, читайте справку. А если нет такой возможности, то смотрите в диалоговом окне "Добавить к архиву" зависимость размера словаря и Объёма памяти для распаковки. Так вот размер словаря использованногопри сжатии можно узнать открыв ваш 7-Zip архив в 7-Zip .
Например Метод LZMA:28 размер словаря 2^28=268435456 256Mb
Автор: smersh2012
Дата сообщения: 04.05.2012 08:15
с ума сойти только увидел на оф.сайте, что 10 мая новый релиз 9.26 ... и всего лишь альфа-версия ... не густо
Автор: The Unforgiven
Дата сообщения: 04.05.2012 08:35
smersh2012 (да и все остальные)
Давно хотел спросить, пользуетесь ли LZMA2? Я просто пробовал уже сколько раз - выигрыш, по идее, только в более быстром сжатии за счёт большего количества потоков?
А то я, по старинке, всё жму LZMA.
Автор: smersh2012
Дата сообщения: 04.05.2012 09:36

Цитата:
пользуетесь ли LZMA2?

нет ... LZMA хватает
Автор: Viewgg
Дата сообщения: 04.05.2012 10:19
The Unforgiven

Цитата:
Давно хотел спросить, пользуетесь ли LZMA2? Я просто пробовал уже сколько раз - выигрыш, по идее, только в более быстром сжатии за счёт большего количества потоков?

Многопоточность реализована, насколько я помню, и в LZMA (хотя в LZMA2 с этим лучше), а с точки зрения сжатия --- несколько улучшена ситуация с несжимаемыми данными.
Автор: WildGoblin
Дата сообщения: 04.05.2012 10:44
The Unforgiven

Цитата:
Давно хотел спросить, пользуетесь ли LZMA2?
Пользуюсь.

Цитата:
Я просто пробовал уже сколько раз - выигрыш, по идее, только в более быстром сжатии за счёт большего количества потоков?
Жмёт быстрее чем LZMA, но наблюдаю некоторые странности - сжатие более быстрым получается если использовать три потока, а не четыре.
Автор: CHYOSS
Дата сообщения: 04.05.2012 13:08

Цитата:
Жмёт быстрее чем LZMA, но наблюдаю некоторые странности - сжатие более быстрым получается если использовать три потока, а не четыре.

Это можно объяснить тем, что при увеличении числа потоков - растёт и требование к памяти, её размеру и скорости.

Если происходит замедление от увеличения чила потоков, то скорее-всего, происходит упирание в подсистему памяти. Можно снизить нагрузку на память, уменьшив размер словаря с 64 до 48 или 32, это чуть ухудшит компрессию, но зато снизит нагрузку на память и позволить получить прирост скорости от использования большего числа потоков.

Возможно, имеет значение, какие эти потоки, если это Hyper-threading, то толку от него должно быть куда меньше...
Автор: Viewgg
Дата сообщения: 04.05.2012 21:03
CHYOSS

Цитата:
Возможно, имеет значение, какие эти потоки, если это Hyper-threading, то толку от него должно быть куда меньше...

Именно. При выполнении однотипных задач, из самых общих соображений, оптимальное количество потоков = количеству физических ядер, иначе производительность только страдает.

Правда, в этих ваших дурацких вёндах, насколько я знаю, планировщик задач до сих пор поганый и недостаточно хорошо растаскивает потоки по различным физическим ядрам, но это уже отдельная тема.
Автор: Pasha_ZZZ
Дата сообщения: 04.05.2012 21:13
Зато степень сжатия может пострадать при использовании более 2 потоков:
Цитата:
You can get the best compression ratio, when you use 1 or 2 threads.
Автор: euheny
Дата сообщения: 05.05.2012 00:00

Цитата:
пользуетесь ли LZMA2

конечно - почти сразу как он появился
амд процы(у меня амд 240) при удвоении потоков на ядро показывают лучшую производительность - жмётся быстрее
про були молчу - смех
Автор: LonerDergunov
Дата сообщения: 05.05.2012 01:17
LonerDergunov

Цитата:
Имеется 7-Zip архив. Как узнать - сколько оперативной памяти требуется для его распаковки?


Inoz2000

Цитата:
LonerDergunov, читайте справку. .....
размер словаря, использованного при сжатии, можно узнать, открыв ваш 7-Zip архив в 7-Zip .
Например, Метод LZMA:28 - размер словаря 2^28=268435456 256Mb


Беда в том, что открыть 7-Zip архив в 7-Zip - не даст ровным счётом ничего.

Пример. Имеется архив, в нём много файлов, сжатых разными методами.
В справке описана команда 7z l -slt archive.7z
Команда показывает, что одни файлы в архиве сжаты методом ppmd:o32:mem29
Другие файлы - методом deflate
Третьи файлы - методом bcj2 lzma:26 lzma:20 lzma:20
Что если в архиве несколько тысяч файлов?
Единственный выход - вручную просматривать отчёт и выискивать какой же файл был сжат с максимальным словарём? Или же существует упрощённый способ определения количества необходимой памяти для распаковки?

Кстати, в одном архиве разные файлы могут быть сжаты с разными словарями lzma(lzma2|ppmd)? Или если задействован определённый словарь для lzma(lzma2|ppmd)-сжатия, то он один для всех файлов?
Автор: Inoz2000
Дата сообщения: 05.05.2012 10:01
LonerDergunov
Цитата:
одни файлы в архиве сжаты методом ppmd:o32:mem29
значит потребуется памяти 2^29, а если в архиве несколькл тысяч файлов, то придётся пожождать выполнение батника
Код: @echo off
SETLOCAL

SET ar=L:\I\sys-Programs_3in1.7z
SET zz=P:\Arc\7-Zip\7z.exe

SET tmpfile=%~dp0MethodList.txt
CD/D "%~dp0">"%tmpfile%"
SET uj=0

for /f "tokens=1,2,*" %%a in ('%zz% l -slt %ar% ^| findstr /i /c:"Method = "') do call :metsort "%%c"
echo.&pause
if exist "%tmpfile%" del /F /Q "%tmpfile%">nul

goto exit

:metsort
if "%~1"=="" goto exit
for /f "tokens=*" %%m in (%tmpfile%) do if /i "%%m" EQU "%~1" SET uj=1
if %uj%==0 echo %~1&echo %~1>>%tmpfile%
SET uj=0

if "%s1%"=="" echo -----&echo ----->>%tmpfile%
SET s1=1

goto exit

:exit
Автор: LonerDergunov
Дата сообщения: 05.05.2012 13:58
Inoz2000
Спасибо.
Автор: iya_grisho
Дата сообщения: 05.05.2012 14:38
Подскажите пожалуйста !!! Скачал из шапки Ultra7z Optimizer 0. 12
Распаковал папку и перетаскиваю на файл ultra7z.exe какой либо файл *.doc, открывается быстро окно командной строки и закрывается - где мне найти упакованный документ ? или как вообще пользоваться программой ?
Автор: Bulat_Ziganshin
Дата сообщения: 05.05.2012 15:38
iya_grisho
насколько я понимаю, надо сначала создать 7z архив (с любыми опциями сжатия), а затем скормить его ultra7z


Цитата:
Имеется 7-Zip архив. Как узнать - сколько оперативной памяти требуется для его распаковки?

freearc, к сожалению, не даёт этой информации напрямую, но хотя бы выдаёт список solid-блоков:

Код: D:\Testing\qt5>arc lt qt5.7z
FreeArc 0.67 (February 5 2012) listing archive: qt5.7z

Archive type: 7z
Total bytes: 5,028,414,325
Compressed bytes: 850,858,929
Ratio: 16.9%

Directory, compressed: 957,657
Solid blocks: 4
Avg. blocksize: 1199 mb

Pos Size Compressed Files Method
-----------------------------------------------------------------------------
0 4,282,063,449 519,689,494 57,060 LZMA:29
0 443,691,587 298,754,574 13,864 LZMA:29
0 302,659,289 32,414,861 298 BCJ2 LZMA:29 LZMA:20:lc0:lp2 LZMA:20:lc0:lp2
0 0 0 13,666
-----------------------------------------------------------------------------
84,888 files, 5,028,414,325 bytes, 850,858,929 compressed
Автор: Inoz2000
Дата сообщения: 05.05.2012 17:31
Bulat_Ziganshin я только не понял Arc 666 у меня выдавал инфо по солид-блокам только для arc-файлов, а счас я обновил до версии 0.67 и всё заработало, стали отображаться солид-блоки в 7z. Это только у меня так или у всех ?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135

Предыдущая тема: RDM+, TSMobiles и VNC+


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.