Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Фоновая распаковка архивов с последующим удалением архивов
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Tue Dec 23, 2008 14:03    Post subject: Фоновая распаковка архивов с последующим удалением архивов Reply with quote

Нашёл на форуме кнопку распаковки архива и скрипт, позволяющий распаковать все выделенные архивы, но ни 1ый и не 2ой вариант не совсем устраивают(

вар1: кнопка:
Code:
TOTALCMD#BAR#DATA
WinRAR.exe -ibck
x %P%N "%P%O\"
C:\Program Files\WinRAR\WinRAR.exe
Распаковать архив в каталог с именем архива
C:\Program Files\WinRAR\
1
-1

"+":
-работает в фоне
-процессом занят WinRar, а не TC (т.е. в тотале можно продолжать работать)
"-":
-распаковывается архив только тот, который под курсором, а не все выделенные
-нет команды winRar'а (по крайней мере не нашёл), позволяющей удалять архив после распаковки

вар 2: скрипт
Code:
'  File:         UnpackHere.vbs
'  Description:  Распаковывает выделенные архивы в ту же директорию
'                где расположены сами архивы, причем каждый архив в
'                отдельную папку с именем, как у файла архива
'  Requirements: WSH Helper for TC by Volniy   
'  Installation: Создайте для скрипта, например, кнопку на панели TC

'  Copyright:    (c) 2005, Volniy

Option Explicit
Dim TCS
Set TCS=CreateObject("TCSCRIPT.Helper")
TCS.Pause=100
TCS.SendCommand "cm_UnpackFiles", False
TCS.SendKeystroke "{DELETE}"
TCS.SendKeystroke "{TAB 4}"
TCS.SendKeystroke chr(32)
TCS.SendKeystroke "{ENTER}"
Set TCS = Nothing
WScript.Quit


"+":
-распаковка всех выделенных архивов
"-":
-процесс распаковки (даже если используется внешний архиватор) происходит "под рукаводством" тотала (т.е. в коммандаре не поработаешь-приходиться запускать копию коммандера)
-без понятия как удалить архивы после распаковки

как вариант, конечно можно из контекстного меню распаковать командой "Извлечь каждый архив в отдельную папку", но это уже не то, так как кнопку/скрипт хочу повесить на хоткей


может быть у кого-то имеются идеи?
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Wed Dec 24, 2008 15:50    Post subject: Reply with quote

вар 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)


Last edited by Tol!k on Sat Mar 14, 2009 23:06; edited 2 times in total
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Sat Dec 27, 2008 16:50    Post subject: Reply with quote

спасибо, Tol!k

у кого появятся ещё идеи по улучшению скрипта - пишите-буду рад)
т.к. пока у скрипта остаётся минус
-процесс распаковки (даже если используется внешний архиватор) происходит "под рукаводством" тотала (т.е. в коммандаре не поработаешь-приходиться запускать копию коммандера)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Mon Dec 29, 2008 19:44    Post subject: Reply with quote

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

Для решения поставленной в теме задачи (кроме удаления) используется кнопка:
Code:
TOTALCMD#BAR#DATA
%Commander_Path%\Utils\WHS\MultiRun.vbs 10 "%ProgramFiles%\WinRar\WinRar.exe"
X -ibck -ad <<%L>> "%P"
%ProgramFiles%\WinRar\WinRar.exe
Фоновое извлечение из архивов в папку с именем архива


-1

Для последющего удаления можно сделать батник.
_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Wed Dec 31, 2008 11:16; edited 1 time in total
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Tue Dec 30, 2008 16:47    Post subject: Reply with quote

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

Batya, а не подскажешь как в батник удаление выделенных файлов прописать?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Tue Dec 30, 2008 18:39    Post subject: Reply with quote

laburj wrote:
обрабатывающие файлы запускаются одновременно, а не последовательно

Внимательно читаем описание в шапке скрипта.
Для последовательного выполнения необходимо первым параметром указать 0, а не 10.
laburj wrote:
Batya, а не подскажешь как в батник удаление выделенных файлов прописать?

Подскажу, но уже после праздников Smile
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Wed Dec 31, 2008 02:37    Post subject: Reply with quote

Quote:
Внимательно читаем описание в шапке скрипта.

сорри))
Quote:
Подскажу, но уже после праздников

с наступающим, Batya и всех, кто есть на форуме
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 23, 2009 13:32    Post subject: Reply with quote

laburj wrote:
пс. Batya, если не сложно доделай тот скрипт

Всё никак не дойдут руки доделать в MultiRun.vbs обещанное:
Batya wrote:
В планах:
- Выполнение нескольких раздельных команд (например, сначала распаковка каждого из списка архивов, потом удаление архивов).


Поэтому привожу таки батник:
Code:
%1 0 %2 X -ibck -ad {{%3}} "%4"
FOR /F "delims=" %%i IN (%3) do del "%%i"


Кнопка:
Code:
TOTALCMD#BAR#DATA
c:\Путь\к\батнику\Батник.cmd
%%Commander_Path%%\Utils\WHS\MultiRun.vbs "%%ProgramFiles%%\WinRar\WinRar.exe" %L "%P"
%ProgramFiles%\WinRar\WinRar.exe
Извлечение из архивов с последующим удалением

1
-1


Внимание! Из-за невозможности в консоли для собственных нужд использовать символы "<" и ">" в MultiRun.vbs меняем:
Code:
Const ListBegin    = "{{"  'Начало списка
Const ListEnd      = "}}"  'Конец списка


И ещё... Не получилось запускать извлечение из архивов параллельно, т.к. в этом случае удаление архивов выполняется, не дожидаясь окончания извлечения.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Sun Nov 01, 2009 19:54    Post subject: Reply with quote

Batya, обратил внимание на то, что вариант с последующим удалением не обрабатывает архивы с кириллическими путями и именами

и ещё одна дилемма - в случае многотомных архивов можно запустить скрипт на одной из части архива. архив распакуется и удалится только та часть, на которой запускался скрипт.
если же выделить все части и запустить скрипт - архив распакуется и все части архива удаляться, только выскочит неоднократные предложения о перезаписи файлов.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Sun Nov 01, 2009 21:58    Post subject: Reply with quote

laburj wrote:
обратил внимание на то, что вариант с последующим удалением не обрабатывает архивы с кириллическими путями и именами
Странно, у меня эти батник+скрипт на TC 7.50 прекрасно работают с русскими именами.

laburj wrote:
и ещё одна дилемма - в случае многотомных архивов можно запустить скрипт на одной из части архива. архив распакуется и удалится только та часть, на которой запускался скрипт.
Здесь ничего не смогу сделать, чтобы всё работало корректно.


laburj wrote:
если же выделить все части и запустить скрипт - архив распакуется и все части архива удаляться, только выскочит неоднократные предложения о перезаписи файлов.
Чтобы не подтверждать перезапись, можно добавить для WinRar параметры по выбору:
Справка WinRar wrote:
-o+ Перезаписывать существующие файлы
-o- Не перезаписывать существующие файлы

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Sun Nov 01, 2009 22:26    Post subject: Reply with quote

Batya wrote:
Странно, у меня эти батник+скрипт на TC 7.50 прекрасно работают с русскими именами.

запускал на версии 7.02а, попробовал и на 7.50а, то же самое

у меня если путь русскими буквами или файл с русским именем, то происходит распаковка в папку с именем архива и архив не удаляется.

может с кодировками у меня что-то не то?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 02, 2009 00:50    Post subject: Reply with quote

laburj wrote:
то происходит распаковка в папку с именем архива и архив не удаляется
Вот так сразу надо было и написать, а то "не обрабатывает".
Надо подумать.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Mon Nov 02, 2009 01:41    Post subject: Reply with quote

Batya wrote:
Вот так сразу надо было и написать, а то "не обрабатывает".

мой косяк, имел ввиду, что не обрабатывает как требуется..
Back to top
View user's profile Send private message
laburj



Joined: 07 Mar 2005
Posts: 186

Post (Separately) Posted: Sun Nov 08, 2009 02:39    Post subject: Reply with quote

Batya, ещё заметил, что скрипт не работает и с англоязычными путями, содержащими пробелы

например, при запуске скрипта на файле
c:\Program Files\del.rar
появляется диагностическое сообщение winrar'а:
! C:\Program Files\del.rar: Нет файлов для извлечения

нажимаю закрыть на сообщении от winrar'а. архив удаляется и создаётся папка с таким путём:
C:\Program Files\Files\del\
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Sat Feb 06, 2010 02:11    Post subject: Reply with quote

Часть дискуссии отделена в тему Запуск FreeArc для нескольких выделенных архивов в Автоматизации.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group