View previous topic :: View next topic |
Author |
Message |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Tue Dec 23, 2008 14:03 Post subject: Фоновая распаковка архивов с последующим удалением архивов |
|
|
Нашёл на форуме кнопку распаковки архива и скрипт, позволяющий распаковать все выделенные архивы, но ни 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 |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Dec 24, 2008 15:50 Post subject: |
|
|
вар 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 |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Sat Dec 27, 2008 16:50 Post subject: |
|
|
спасибо, Tol!k
у кого появятся ещё идеи по улучшению скрипта - пишите-буду рад)
т.к. пока у скрипта остаётся минус
-процесс распаковки (даже если используется внешний архиватор) происходит "под рукаводством" тотала (т.е. в коммандаре не поработаешь-приходиться запускать копию коммандера) |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Dec 29, 2008 19:44 Post subject: |
|
|
Написал 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 |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Tue Dec 30, 2008 16:47 Post subject: |
|
|
Batya, спасибо! классно работает, немного потестил и нашёл одно замечание (хотя для кого-то может показаться и плюсом): дело в том что процессы, обрабатывающие файлы запускаются одновременно, а не последовательно, т.е. для распаковки 10ти выделенных архивов запускается 10 процессов, и все одновременно разархивируют.. если архив до метров 10ти, то ещё нормально,а если больше, то сложнее..
Batya, а не подскажешь как в батник удаление выделенных файлов прописать? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Dec 30, 2008 18:39 Post subject: |
|
|
laburj wrote: | обрабатывающие файлы запускаются одновременно, а не последовательно |
Внимательно читаем описание в шапке скрипта.
Для последовательного выполнения необходимо первым параметром указать 0, а не 10.
laburj wrote: | Batya, а не подскажешь как в батник удаление выделенных файлов прописать? |
Подскажу, но уже после праздников  _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Wed Dec 31, 2008 02:37 Post subject: |
|
|
Quote: | Внимательно читаем описание в шапке скрипта. |
сорри))
Quote: | Подскажу, но уже после праздников |
с наступающим, Batya и всех, кто есть на форуме |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Fri Oct 23, 2009 13:32 Post subject: |
|
|
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 |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Sun Nov 01, 2009 19:54 Post subject: |
|
|
Batya, обратил внимание на то, что вариант с последующим удалением не обрабатывает архивы с кириллическими путями и именами
и ещё одна дилемма - в случае многотомных архивов можно запустить скрипт на одной из части архива. архив распакуется и удалится только та часть, на которой запускался скрипт.
если же выделить все части и запустить скрипт - архив распакуется и все части архива удаляться, только выскочит неоднократные предложения о перезаписи файлов. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Sun Nov 01, 2009 21:58 Post subject: |
|
|
laburj wrote: | обратил внимание на то, что вариант с последующим удалением не обрабатывает архивы с кириллическими путями и именами | Странно, у меня эти батник+скрипт на TC 7.50 прекрасно работают с русскими именами.
laburj wrote: | и ещё одна дилемма - в случае многотомных архивов можно запустить скрипт на одной из части архива. архив распакуется и удалится только та часть, на которой запускался скрипт. | Здесь ничего не смогу сделать, чтобы всё работало корректно.
laburj wrote: | если же выделить все части и запустить скрипт - архив распакуется и все части архива удаляться, только выскочит неоднократные предложения о перезаписи файлов. | Чтобы не подтверждать перезапись, можно добавить для WinRar параметры по выбору: Справка WinRar wrote: | -o+ Перезаписывать существующие файлы
-o- Не перезаписывать существующие файлы |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Sun Nov 01, 2009 22:26 Post subject: |
|
|
Batya wrote: | Странно, у меня эти батник+скрипт на TC 7.50 прекрасно работают с русскими именами. |
запускал на версии 7.02а, попробовал и на 7.50а, то же самое
у меня если путь русскими буквами или файл с русским именем, то происходит распаковка в папку с именем архива и архив не удаляется.
может с кодировками у меня что-то не то? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Nov 02, 2009 00:50 Post subject: |
|
|
laburj wrote: | то происходит распаковка в папку с именем архива и архив не удаляется | Вот так сразу надо было и написать, а то "не обрабатывает".
Надо подумать. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Mon Nov 02, 2009 01:41 Post subject: |
|
|
Batya wrote: | Вот так сразу надо было и написать, а то "не обрабатывает". |
мой косяк, имел ввиду, что не обрабатывает как требуется.. |
|
Back to top |
|
 |
laburj
Joined: 07 Mar 2005 Posts: 186
|
(Separately) Posted: Sun Nov 08, 2009 02:39 Post subject: |
|
|
Batya, ещё заметил, что скрипт не работает и с англоязычными путями, содержащими пробелы
например, при запуске скрипта на файле
c:\Program Files\del.rar
появляется диагностическое сообщение winrar'а:
! C:\Program Files\del.rar: Нет файлов для извлечения
нажимаю закрыть на сообщении от winrar'а. архив удаляется и создаётся папка с таким путём:
C:\Program Files\Files\del\ |
|
Back to top |
|
 |
Avada

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