Рекурсивная распаковка архивов в Total Commander

Приветствую всех.

Хочу поделиться с вами одним удобным методом работы с архивами. Архивы сейчас используются повсеместно и массово, большое число форматов и размеров, в разных операционных системах. Причем и самих программ-архиваторов уже довольно немало. В моем же небольшом повествовании речь пойдет о использовании архиватора 7zip в связке с файловым менеджером Total Commander в Windows среде. Используя достоинства этих двух программ можно добиться интересных и практически полезных результатов.

В силу разных причин, у вас может возникнуть необходимость распаковать большое количество архивов, когда о «ручной» работе не может быть и речи, например, если архивов не сотни а тысячи. Скажу более конкретно — в моем случае несколько тысяч архивов лежали каждый в своем каталоге (библиотека файлов). А задача была такая: распаковать каждый zip-архив и входящие в него файлы положить в тот же каталог, где находится исходный архив, не создавая дополнительные подкаталоги.

Само собой, ходить по всей ветке суб-каталогов мы «ходить» не будем, а заставим это делать небольшой скрипт, оптимизированный специально для запуска из меню Total Commander.

tc1Рис. 01

Ниже представлен код нашего рабочего скрипта, который был найден на страницах форума wincmd.ru (ссылка на страницу оригинала):

@echo off &setlocal enableextensions &chcp 1251 >nul
rem Распаковка с помощью 7-Zip
set "Arc=%programfiles%\7-Zip\7z.exe"

goto :------------------------------------------------------------
rem Параметры: список "D:\куда\" -o
rem -o —— в отдельные папки с именами архивов
rem Пример параметров для TC: "%L" "%%userprofile%%\Мои документы\"
rem В одноимённые папки расположенные в пути запуска (или в текущем): "%L" -o
rem В одноимённые папки расположенные рядом с архивами: "%L" "%%~dpf" -o
:------------------------------------------------------------

set "Dest=" &set "cage="
if /i "%~2"=="-o" set "cage=Yes"
if /i "%~3"=="-o" set "cage=Yes"
if not "%~2"=="" if /i not "%~2"=="-o" set "Dest=%~2"
if not "%~3"=="" if /i not "%~3"=="-o" set "Dest=%~3"

if "%cage%"=="Yes" set "Dest=%Dest%.\%%~nf"
for /f "usebackq delims=" %%f in ("%~1") do (
title Unpacking "%%~nf"
"%Arc%" x -scsWIN -y -o"%Dest%." -- "%%f"
)

Как видно, код относительно несложный, доступный для изучения при желании любому консольному гику. Копируем содержимое в окно Notepad и сохраняем с расширением *.CMD в удобное место.

Если у вас еще не установлен вышеупомянутый архиватор — самое время это сделать. скачав его с официального сайта.

Теперь открываем TotalCommander и правой кнопкой мышки кликаем на панели с кнопками, выбрав пункт «Изменить».

tc2Рис. 02

В открывшемся окне жмем «Добавить» и в шаблон новой «кнопки» вписываем:

полный путь до нашего скрипта (c:\bin\cmdcollection\7z-unp2.cmd)
параметры передаваемые скрипту
картинка для кнопки в панели TC

tc3Рис. 03

Нажимаем ОК.

Далее, открываем каталог с нашими архивами, вызываем диалог поиска (ALT+F7) и ищем архивы по маске:

tc4Рис. 04

Нажимаем «Файлы на панель», в результате чего все найденные файлы у нас оказываются в одном окне в независимости от расположения внутри дерева каталогов и под-каталогов.
Выделяем все (CTRL+A) и жмем на нашу новую кнопку (с картинкой «DOS» справа).

tc5Рис. 05

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

tc6Рис. 06

tc7Рис. 07

Поведение архиватора меняется подстановкой нужных параметров в соответствующем поле диалога настройки кнопки в TC, а сами параметры приведены в комментарии к скрипту.

Надеюсь этот небольшой «костыль» окажется кому-то весьма полезен в жизни или по работе.

Удачи!

Источники:

http://forum.wincmd.ru/viewtopic.php?t=14064&postdays=0&postorder=asc&&start=0
http://forum.wincmd.ru/viewpost.php?p=67240
http://forum.wincmd.ru/viewtopic.php?t=13436&start=30&postdays=&postorder=&highlight=

VKOdnoklassnikiFacebookTwitterBlogger PostGoogle+Поделиться
Запись опубликована в рубрике Без рубрики с метками , , , , , , , , , , , , , , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *