Страница 2 из 4

Добавлено: Сб фев 06, 2010 01:39
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)

Добавлено: Пн фев 08, 2010 01:13
laburj
Batya, тебе в очередной раз уважуха)
наконец-то теперь всё работает, кроме..
..случая распаковки многотомных архивов. Если выделить несколько частей архива (part1, part2 и т.д.), а после нажать на кнопку распаковки (даже с ключом режима перезаписи : пропускать существующие файлы), то возникает несколько (по количеству частей архива) диагностических сообщений от winRar, мол такой то архив.part1.rar: Нет файлов для извлечения

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

Добавлено: Вт фев 16, 2010 17:21
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)
================================================

это вске очень прекрасно но куда прописывать эти команды обьясните вкраце ток понятно спасибоо!!заранее!

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

aaa

Добавлено: Ср фев 17, 2010 03:45
racer
ну яже спрашивал про скрипт/// непойму как его открыть куда че фак
а с биндами и так все ясно это кстати тупо придумано а вот как сделать чтоб архив удалялся или хотябы куданиб отправлялся8^) сам посебе???
сенсорные экраны юзаеш??

[mod="CaptainFlint"]Предупреждение за нарушение п. 14 правил. Настоятельно рекомендую сменить стиль выражения своих мыслей так, чтобы было удобно и понятно не только пишущему, но и читающему.[/mod]

Re: aaa

Добавлено: Ср фев 17, 2010 18:33
Tol!k
racer писал(а):куда че фак
http://forum.wincmd.ru/viewpost.php?p=56542

Добавлено: Вт июл 12, 2011 11:30
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)

Добавлено: Вт июл 12, 2011 12:32
Flasher
swr
Я в нюансах кода не ковырялся. Может, в этом дело?

Добавлено: Вс фев 02, 2014 14:07
Cobblestone-TLT
Возможно ли поправить батник/скрипт таким образом, чтобы архив удалялся только при удачной распаковке? Бывают ситуации, что среди незапароленных архивов попадаются с паролем, в такой ситуации вылетает окошко с запросом пароля, приходится выискивать такой архив и временно копировать его в другое место, чтобы в дальнейшем уточнять пароль к нему и распаковывать отдельно, или если вдруг ошибешься с вводом пароля, то после распаковки получишь пустую папку, WinRAR сообщит об ошибке несовпадения пароля, но батник по завершении распаковки всех архивов их в любом случае удалит.

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

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

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

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

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

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

Posted after 2 minutes:

Возможно вопрос больше в тему "Автоматизация", но уж коли сам батник, скрипт и кнопка находятся здесь, написал сюда же.

Добавлено: Вс фев 02, 2014 15:24
Avada
Cobblestone-TLT
Чтобы всё было на своих местах, лучше всего попросту переместить тему в "Автоматизацию".

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

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

Добавлено: Вс фев 02, 2014 19:04
Avada
Cobblestone-TLT
Решение о переносе уже принято, и сам перенос, как нетрудно видеть, выполнен — мы сейчас в "Автоматизации". (Зелёным цветом в моих постах обозначаются модераторские действия.) Дополнительно с темой и сообщением ничего сейчас делать не надо.

Добавлено: Вс фев 02, 2014 19:24
Flasher
Cobblestone-TLT
Если заголовки зашифрованы, то практически нереально...
Разве что создавать комментарии для архивов и там прописывать статус.
Удалять пустые папки можно, но от того утилита висеть в трее не перестанет.

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

Posted after 4 minutes:

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

Добавлено: Вс фев 02, 2014 21:04
Flasher
Cobblestone-TLT
WinRAR.exe и 7z.exe будут создавать папки в любом случае (7z даже файлы-пустышки будет создавать), т.е. придётся в любом случае удалять нулевые папки. А с висом и окном решаемо ключами -p- -inul/-y.