Фоновая распаковка архивов с последующим удалением архивов

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

laburj писал(а):у меня если путь русскими буквами или файл с русским именем, то происходит распаковка в папку с именем архива и архив не удаляется.
laburj писал(а):Batya, ещё заметил, что скрипт не работает и с англоязычными путями, содержащими пробелы
Сорри, я как-то пропустил твои посты с проблемами. Хорошо, что тему подняли :)
Лучше поздно, чем никогда. Со скриптом всё в порядке, а батник должен быть такой:

Код: Выделить всё

%1 0 %2 X -ibck -ad {{%3}} ""%4""
chcp 1251>nul
FOR /F "delims=" %%i IN (%3) do del "%%i"
Avada
Этот пост переносить не надо 8)
Нет, я не сплю. Я просто медленно моргаю.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya, тебе в очередной раз уважуха)
наконец-то теперь всё работает, кроме..
..случая распаковки многотомных архивов. Если выделить несколько частей архива (part1, part2 и т.д.), а после нажать на кнопку распаковки (даже с ключом режима перезаписи : пропускать существующие файлы), то возникает несколько (по количеству частей архива) диагностических сообщений от winRar, мол такой то архив.part1.rar: Нет файлов для извлечения
racer
Сообщения: 2
Зарегистрирован: Вт фев 16, 2010 17:08

Фоновая распаковка архивов с последующим удалением архивов

Сообщение racer »

Tol!k писал(а):вар 2
если в скрипт добавить такие строки
TCS.Pause=100
TCS.SendCommand "cm_SaveSelection", False
TCS.SendCommand "cm_UnpackFiles", False
и
TCS.SendKeystroke "{ENTER}"
'Время на распаковку всех выделенных архивов
TCS.Pause=7000
TCS.SendCommand "cm_RestoreSelection", False
TCS.Pause=100
TCS.SendKeystroke "{DELETE}"
TCS.SendKeystroke "{ENTER}"

Set TCS = Nothing
после распаковки архивы удаляются в корзину.
--------------------------------------------------------------------------
или
'Время на распаковку всех выделенных архивов
TCS.Pause=7000
TCS.SendCommand "cm_RestoreSelection", False
TCS.Pause=100
TCS.SendKeystroke "+{DELETE}"
TCS.SendKeystroke "{ENTER}"

для удаления мимо корзины (если позволяют настройки TC)
================================================

это вске очень прекрасно но куда прописывать эти команды обьясните вкраце ток понятно спасибоо!!заранее!
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

racer
Да в скрипт UnpackHere.vbs от Volniy. Код скрипта приведён постом выше.
Зелёный текст это то, что уже есть в скрипте; оранжевый — то, что нужно добавить.
Только не советую использовать эту неудачную доработку, т.к. нужно угадать паузу для распаковки всех архивов (TCS.Pause=7000 — это 7 сек.)
:!: Если времени окажется недостаточно, скрипт будет работать неправильно.
racer
Сообщения: 2
Зарегистрирован: Вт фев 16, 2010 17:08

aaa

Сообщение racer »

ну яже спрашивал про скрипт/// непойму как его открыть куда че фак
а с биндами и так все ясно это кстати тупо придумано а вот как сделать чтоб архив удалялся или хотябы куданиб отправлялся8^) сам посебе???
сенсорные экраны юзаеш??

[mod="CaptainFlint"]Предупреждение за нарушение п. 14 правил. Настоятельно рекомендую сменить стиль выражения своих мыслей так, чтобы было удобно и понятно не только пишущему, но и читающему.[/mod]
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Re: aaa

Сообщение Tol!k »

racer писал(а):куда че фак
http://forum.wincmd.ru/viewpost.php?p=56542
swr
Сообщения: 59
Зарегистрирован: Чт июн 07, 2007 00:41

Сообщение swr »

[quote="Batya"]Написал vbs-скрипт - [Script] Выполнение команды для каждого элемента списка.

Для решения поставленной в теме задачи (кроме удаления) используется кнопка:

Код: Выделить всё

TOTALCMD#BAR#DATA
%Commander_Path%\Utils\WHS\MultiRun.vbs 10 "%ProgramFiles%\WinRar\WinRar.exe"
X -ibck -ad <<%L>> "%P"
%ProgramFiles%\WinRar\WinRar.exe
Фоновое извлечение из архивов в папку с именем архива


-1
[/quote]

Скажите пожалуйста, возможно ли изменить данную кнопочку, чтобы архив распаковывался рядом в той же папке. Все это работает корретно до тех пор пока я не выделяю файлы-архивы в режиме просмотра директории без подкаталогов (по умолч. хоткей ctr+b)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

swr
Я в нюансах кода не ковырялся. Может, в этом дело?
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

Возможно ли поправить батник/скрипт таким образом, чтобы архив удалялся только при удачной распаковке? Бывают ситуации, что среди незапароленных архивов попадаются с паролем, в такой ситуации вылетает окошко с запросом пароля, приходится выискивать такой архив и временно копировать его в другое место, чтобы в дальнейшем уточнять пароль к нему и распаковывать отдельно, или если вдруг ошибешься с вводом пароля, то после распаковки получишь пустую папку, WinRAR сообщит об ошибке несовпадения пароля, но батник по завершении распаковки всех архивов их в любом случае удалит.

Вобщем очень хочется видеть следующий результат работы скрипта/батника/кнопки:
1. выделяешь нужные архивы
2. жмешь кнопку
3. на месте удачно распакованных архивов - папки с их содержимым (сами архивы удалены)
4. архивы, распакованные с ошибкой (несовпадение пароля и т.п.) - остаются на своём месте нетронутыми, пустые папки после их неудачной распаковки не созданы(удалены).

Такми образом сразу будет видно какие архивы распаковались "как надо", а какие требуют "особого внимания".

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

p.s. Какие из обрабатываемых архивов под паролем заранее неизвестно.
p.p.s. очень не хочется, чтобы при "натыкании" на такой архив весь процесс "стопорился", в идеале если он просто будет автоматически пропущен.

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

Если довести функционал до такого уровня реально - буду крайне признателен.

Posted after 2 minutes:

Возможно вопрос больше в тему "Автоматизация", но уж коли сам батник, скрипт и кнопка находятся здесь, написал сюда же.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Cobblestone-TLT
Чтобы всё было на своих местах, лучше всего попросту переместить тему в "Автоматизацию".
Даже самая богатая фантазия
Не представит себе наши безобразия.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

Avada
Поясните пожалуйста, мне со своим сообщением надо что-то сделать? Или создать с ним тему в "Автоматизации"?
Я вроде как нашел уже интересующую меня тему, воспользовался вариантом решения поставленной задачи, предложенным в этой теме, столкнулся с некоторыми нюансами и попросил помощи в их решении здесь же. Если всей этой теме место в другом разделе, то решение о её переносе, уверен, модератором примется без моего участия. Если требуется создать тему в "Автоматизации", я перенесу своё сообщение туда, а вас попрошу добавить ссылку на страницу в этой теме с уже имеющимися наработками по этому вопросу.
Спасибо за внимание!

p.s. Случай считаю не таким уж частным, думаю не только у меня может сложиться ситуация, когда воспользовавшись предложенным вариантом, пользователь получит пустую папку и удаленный первоисточник информации (я про случай архива под паролем).
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Cobblestone-TLT
Решение о переносе уже принято, и сам перенос, как нетрудно видеть, выполнен — мы сейчас в "Автоматизации". (Зелёным цветом в моих постах обозначаются модераторские действия.) Дополнительно с темой и сообщением ничего сейчас делать не надо.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Cobblestone-TLT
Если заголовки зашифрованы, то практически нереально...
Разве что создавать комментарии для архивов и там прописывать статус.
Удалять пустые папки можно, но от того утилита висеть в трее не перестанет.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

Flasher
А если попытаться реализовать такой алгоритм: скрипт пытается распаковать архив, пытается впихнуть какой-либо пароль, пусть так же из буфера или заранее заданный где-либо в параметрах, если буфер пустой (чтобы процесс не останавливался на окне с запросом этого самого пароля), затем проверяет резмер получившейся папки, если результат "нулевой" - удаляет папку, оставляет архив, если не нулевой (папка содержит файлы/вложенные папки с файлами ненулевой длины) - скрипт оставляет эту папку и удаляет исходный архив. Сообщения WinRAR об ошибках при распаковке из-за несовпадения пароля желательно при этом как-то игнорировать(пропускать/скрывать).

Posted after 4 minutes:

Опередил меня немного) Пусть даже остается висеть в трее и придется вручную закрывать окна с ошибками WinRAR'а (благо таких окон будет не много и не часто) лишь бы они не мешали обрабатывать все остальные и не удалялись сами архивы, которые явились причиной появления этих окон с ошибками.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Cobblestone-TLT
WinRAR.exe и 7z.exe будут создавать папки в любом случае (7z даже файлы-пустышки будет создавать), т.е. придётся в любом случае удалять нулевые папки. А с висом и окном решаемо ключами -p- -inul/-y.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить