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

» WinRAR (часть 2)

Автор: Pasha_ZZZ
Дата сообщения: 11.08.2014 21:58
EugeneRoshal
Скачал свежий 32-битный, все равно не работает. А ВинПЕ и устанавливать не надо: подключил ИСОшку к тому же ВиртуалБоксу и загрузился с нее.
Автор: EugeneRoshal
Дата сообщения: 11.08.2014 23:56
Pasha_ZZZ

Цитата:
А ВинПЕ и устанавливать не надо: подключил ИСОшку к тому же ВиртуалБоксу и загрузился с нее.

А откуда эту iso взять? Насколько я сейчас вижу, для семерки надо устанавливать Windows Automated Installation Kit, потом из него несколькими утилитами готовить iso.
Автор: Pasha_ZZZ
Дата сообщения: 12.08.2014 00:14
EugeneRoshal
Можно готовые со всем необходимым (в т.ч. дровами) взять в этом топике. Если брать RusLive - то не самую последнюю версию (от 8 августа или еще старее), в последней встроен уже ИЕ.
Автор: Victor_VG
Дата сообщения: 12.08.2014 00:16
EugeneRoshal

Женя! Я для вас отыскал вариант на http://rutracker.org/forum/viewtopic.php?t=3650177 только одна особенность - торрент-файл надо скачивать браузером ибо качалки притащат веб-страницу. Можно воспользоваться этим образом для тестирования.
Автор: Skif_off
Дата сообщения: 12.08.2014 03:14
Victor_VG
Вы описание смотрели?

Цитата:
на базе Windows 8 ADK

Лучше уж это.
Автор: Victor_VG
Дата сообщения: 12.08.2014 03:34
Skif_off

Честно говоря не присматривался. Нашёл, скачал себе, после при случае проверю.
Автор: EugeneRoshal
Дата сообщения: 12.08.2014 09:38
Pasha_ZZZ, Victor_VG
Понял, посмотрю.

Skif_off

Цитата:
Лучше уж это.

Выше пишут, что нужно не новее 8 августа.
Автор: EugeneRoshal
Дата сообщения: 12.08.2014 13:02
Pasha_ZZZ
Я обновил английскую 5.11 beta 1 на rarlab.com, у меня теперь в WinPE SFX запускаются. Я доработал метод определения наличия IWebBrowser2. Прошлый вариант давал ложные сообщения о наличии этого интерфейса. Правда у нового варианта я опасаюсь ложных сообщений об отсутствии и переключения SFX в текстовый режим там, где не требуется. Надо будет понаблюдать.
Автор: beome
Дата сообщения: 18.08.2014 18:28
Подскажите пожалуйста, возможно ли сделать, чтобы SFX архив распаковывался в папку с именем этого архива, так же как "Извлечь в %Archive Name%"? А если нельзя, то как прописать путь к исполняемому после разархивирования файлу?

Setup=conf.bat Silent=1 не находит батник, если в SFX архиве была папка, а не файлы, должна быть какая-то переменная, вроде Setup=%Archive Name%\conf.bat.
Автор: EugeneRoshal
Дата сообщения: 18.08.2014 18:55
beome

Цитата:
Setup=conf.bat Silent=1 не находит батник, если в SFX архиве была папка, а не файлы, должна быть какая-то переменная, вроде Setup=%Archive Name%\conf.bat.

Если conf.bat в архиве был внутри папки somefolder, так и пишите:
Setup=somefolder\conf.bat
Автор: beome
Дата сообщения: 18.08.2014 20:30
EugeneRoshal
Прошу прощения, нужно было подробнее объяснить задачу. Есть множество папок, в каждой несколько файлов и батник.

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

2) Если выделить папку и создать SFX архив, то батник не находит, но прописывать Setup=somefolder\conf.bat на каждую папку слишком трудоемко, поэтому думал есть переменная вроде %Только что разархивированная папка нейм%.
Автор: Pasha_ZZZ
Дата сообщения: 18.08.2014 20:50
beome
В корневой папке архива создать батник, который будет запускаться. Он ищет и запускает все остальные батники в подкаталогах через
Цитата:
for /r "%~dp0" %%f in (*.bat) do if not "%~0"=="%%~f" call %%f
Автор: Ukei
Дата сообщения: 19.08.2014 10:43
- Ребятки, такая задача: Есть пара десятков архивов, хочется все распаковать в соотв. папку (имя папки должно соответствовать имени файла) - как сделать? Спасибо.

PS: Конечно, хочется не по одному файлику распаковывать, а скопом все.
Автор: EugeneRoshal
Дата сообщения: 19.08.2014 10:51
beome

Цитата:
поэтому думал есть переменная вроде %Только что разархивированная папка нейм%

При запуске setup программы SFX устанавливает папку с распакованными файлами текущей, так что можно использовать имя текущей папки. Если же нужно имя самого SFX архива, это %sfxname%
Автор: Pasha_ZZZ
Дата сообщения: 19.08.2014 11:26
Ukei
Выделить нужные архивы, ПКМ - Распаковать каждый файл в отдельную папку
Автор: beome
Дата сообщения: 19.08.2014 11:40
Pasha_ZZZ
К сожалению не работает, даже без архива, хотя батник запускается, он точно правилен?

EugeneRoshal
Перепробовал уже кучу вариантов, справку прочитал, вот нижний код по моей логике должен создавать одноименную с архивом папку рядом с SFX и в нее распаковывать файлы и в ней же запускать .bat, но он вызывает ошибку.

Код: Path=.\%sfxname%
Setup=%sfxname%\UnPack.bat
Silent=1
Автор: Pasha_ZZZ
Дата сообщения: 19.08.2014 12:21
beome
Заменил в конце call на echo - как и ожидалось, получил список имен батников из текущей и всех вложенных папок. Кроме самого этого батника (так и задумано, этим занимается if).
Автор: beome
Дата сообщения: 19.08.2014 12:31
Pasha_ZZZ
Не силен в батникописании, видимо что-то у меня не так, а можно сделать чтобы командная строка не исчезала моментально, прочесть что там написано?
Автор: regist123
Дата сообщения: 19.08.2014 12:48
beome 13:31 19-08-2014
Цитата:
исчезала моментально, прочесть что там написано?

допишите внизу pause, а вообще с вопросами по батникам лучше переезжайте сюда Командная строка, батники, сценарии (bat, cmd)
Автор: Pasha_ZZZ
Дата сообщения: 19.08.2014 12:49
beome
Запустить cmd.exe, а из него запустить батник. Или так:
Цитата:
cmd.exe /k BatFileName.bat
Автор: EugeneRoshal
Дата сообщения: 19.08.2014 13:33
beome

Цитата:
создавать одноименную с архивом папку рядом с SFX и в нее распаковывать файлы и в ней же запускать .bat, но он вызывает ошибку.

Код:
Path=.\%sfxname%
Setup=%sfxname%\UnPack.bat
Silent=1


А вы представьте, во что он превращается после замены переменной:

Path=.\c:\somepath\arcname.rar
Setup=c:\somepath\arcname.rar\UnPack.bat

Насколько я понял, просто:

Path=.\arcname
Setup=arcname\UnPack.bat

не подходит, так как у вас много однотипных архивов, и каждый раз менять arcname трудоемко. Тогда я бы попытался автоматизировать создание архивного комментария с новым arcname для каждого архива с помощью небольшой программы или .bat файла.
Автор: Ukei
Дата сообщения: 19.08.2014 13:50
Pasha_ZZZ
- Оно, спасибо.
Автор: beome
Дата сообщения: 19.08.2014 18:41
EugeneRoshal
Спасибо, логика подсказывает то, что хочется видеть, но главное выяснили, что это нельзя сделать средствами WinRAR.

Если Вы действительно Евгений Рошал, быть может, рассмотрите добавление функции (галочку или ключ), "Извлечь SFX архив в %Имя архива%", делая эту папку текущей для Setup-а. Был удивлен ее отсутствию, т.к. всю жизнь, в основном, распаковывал обычные архивы именно так.

На волне вышесказанного, пришла идея по улучшению эргономики. Есть 2 типа архивов, в 1-ом, файлы лежат в корне, во 2-ом, в корне лежит папка с файлами, так вот, можно сделать дополнительный пункт контекстного меню "Извлечь <Авто>", предположим, по умолчанию отключенный, который бы автоматически анализировал какого типа архив и если 1-ый, то создавал бы папку с именем архива, а 2-ой, следовательно распаковывал бы просто, конечно, возможно, Вы об этом уже думали.
Автор: oshizelly
Дата сообщения: 30.08.2014 13:53
Нередко возникает такая странная ошибка при распаковке. Распаковываю не очень большой запароленный архив (например, 200 MB, пара тысяч файлов в нескольких сотнях папок) на раздел FAT32. В диалоге распаковки на вкладке Advanced выставлены все галки сохранять время: последнего изменения, создания, последнего доступа к телу.

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

Когда встречаюсь с этой ошибкой, всё время пытаюсь понять алгоритм: почему именно эти папки? чем они отличаются от остальных? Или это просто происходит совершенно случайным образом?

Нет ли у кого-то идей? Может, уважаемый автор знает ответ?
Автор: EugeneRoshal
Дата сообщения: 30.08.2014 16:42
oshizelly
Не знаю. Если выложите где-нибудь тестовый архив, посмотрю.

Добавлено:
oshizelly
Может эти папки в архиве просто отсутствуют, а создаются по информации из путей к файлам. Можно посмотреть листинг архива: rar vt arcname > list.txt, есть ли в нем эти папки, и присутствует ли у них требуемое время.
Автор: oshizelly
Дата сообщения: 30.08.2014 20:18
EugeneRoshal 16:42 30-08-2014
Цитата:
Может эти папки в архиве просто отсутствуют, а создаются по информации из путей к файлам.

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


Цитата:
. Если выложите где-нибудь тестовый архив, посмотрю.

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

А что, неужели до меня никто о таком не писал в службу поддержки?
Автор: EugeneRoshal
Дата сообщения: 31.08.2014 10:12
oshizelly

Цитата:
Папки совершенно точно присутствуют. Для этого не надо даже листинг смотреть: эти папки видны, когда этот архив открываешь в окне WinRar.

Это еще не показатель. Если вы упаковали файл командой:
rar a arc c:\dir1\dir2\file.ext
WinRAR покажет папки dir1 и dir1\dir2, но при этом в архиве будет информация только о файле dir1\dir2\file.ext

Цитата:
И их время указано правильно, по крайней мере, время последней модификации (не знаю, как посмотреть в архиве время создания и последнего доступа для папки).

Вот то что время указано правильно, это показатель. Но все равно надежнее проверить наличие командой "vt". Там заодно и ctime с atime можно посмотреть.

Есть еще одна возможная причина такой проблемы. Если после создания архива вы добавляли файлы в какие-то папки внутри архива, время этих папок может не восстанавливаться при распаковке. WinRAR распаковывает файлы и папки в том порядке, в котором они хранятся в архиве, второй проход не делает. При создании архива папки помещаются в архив после содержащихся в них файлов, поэтому такой подход работает нормально. Но если после папки добавлен новый файл, WinRAR распакует его после того, как время папки уже установлено. А создание файла внутри папки сбивает mtime и atime папки.

Возможным решением был бы или второй проход по архиву (медленно, не всегда возможно для томов), или хранение имен и времен папок до окончания распаковки (непредсказуемый расход памяти при большом количестве папок).
Автор: oshizelly
Дата сообщения: 31.08.2014 13:34
EugeneRoshal 10:12 31-08-2014

Цитата:
Но все равно надежнее проверить наличие командой "vt". Там заодно и ctime с atime можно посмотреть.

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


Цитата:
Есть еще одна возможная причина такой проблемы. Если после создания архива вы добавляли файлы в какие-то папки внутри архива, время этих папок может не восстанавливаться при распаковке.

Не добавлял. Архив создавался одной операцией путём упаковки двух больших корневых папок с их дочерними папками и после этого больше не модифицировался.


Цитата:
При создании архива папки помещаются в архив после содержащихся в них файлов, поэтому такой подход работает нормально. Но если после папки добавлен новый файл, WinRAR распакует его после того, как время папки уже установлено. А создание файла внутри папки сбивает mtime и atime папки.

Mtime - только на логических разделах с файловой системой NTFS. А я ведь не случайно указал в первом посте, что целевая папка находится на разделе FAT32. Там при изменении содержимого папки меняется только время последнего доступа (atime), но не время модификации папки.



Кстати, обратил сейчас внимание, что выходной список в кодировке ASCII, поэтому все диакритики (например, немецкие и скандинавские буквы с умляутами) заменяются простыми буквами английского алфавита. Это так и задумано?

Добавлено:
EugeneRoshal 10:12 31-08-2014
Цитата:
Возможным решением был бы или второй проход по архиву (медленно, не всегда возможно для томов), или хранение имен и времен папок до окончания распаковки (непредсказуемый расход памяти при большом количестве папок).

Сделать опционально? Пусть юзер сам решает, что для него важнее в каждом конкретном случае: воссоздание оригинальных штампов времени папок или время распаковки и расход ресурсов.
Для меня это в 99% случаев будет выбор в пользу сохранения оригинальных штампов времени.
Автор: EugeneRoshal
Дата сообщения: 31.08.2014 21:53
oshizelly

Цитата:
Не добавлял. Архив создавался одной операцией путём упаковки двух больших корневых папок с их дочерними папками и после этого больше не модифицировался.

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

Цитата:
Кстати, обратил сейчас внимание, что выходной список в кодировке ASCII, поэтому все диакритики (например, немецкие и скандинавские буквы с умляутами) заменяются простыми буквами английского алфавита. Это так и задумано?

Да, если stdout переадресован в файл, RAR использует OEM кодировку. Иначе pipes типа |more будут дурить с кодировкой.

Цитата:
Сделать опционально?

Посмотрим. Ситуация это не самая частая, но решение надо как-то продумывать, чтобы исключить возможность злоупотребления. Неконтролируемый расход памяти к этому бы располагал. В любом случае, если архив не обновлялся, это к описываемой проблеме отношения не имеет.
Автор: Victor_VG
Дата сообщения: 01.09.2014 13:05
EugeneRoshal

Женя, день добрый!

Если я правильно понимаю, то исполняемый код в бинарниках v5.11 Beta 1 и v5.11 Stable от 27.08.2014 почти не менялся (без учёта нумерации версий)? Т.е. ошибки можно считать более-менее выловленными, ну а коли что свежее всплывёт будет в рабочем порядке правится?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160

Предыдущая тема: Прога для поиска картинок в интернете.


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