Продолжаем разговор об архивах, напомню, в прошлой статье речь шла о ZIP-архивах. В этой же статье я расскажу об известных мне способах работы с архивами RAR в 1С 8.2 и 8.3.
Общая информация
На сколько мне известно, имеется всего один адекватный способ работы с RAR-архивами. Он заключается в использовании RAR-овских консольных утилит при помощи процедуры «КомандаСистемы».
Использовать можно две утилиты: rar.exe и unrar.exe
- rar.exe — умеет все, но платная;
- unrar.exe — умеет только распаковывать архивы, но бесплатная.
Обе утилиты можно найти в папке с установленным WinRAR-ом, а unrar.exe также можно скачать тут.
Эти утилиты можно использовать прямо из папки с установленным WinRAR-ом или, для большей универсальности, засунуть их в общий макет и доставать по мере необходимости (какие-либо другие WinRAR-овские файлы для работы этих утилит не требуются).
Создание и распаковка RAR-архива в 1С 8.3 и 8.3
Создание RAR-архива:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | &НаКлиенте Процедура СоздатьRAR(Команда) тРАР = ПолучитьИмяВременногоФайла("exe"); ПолучитьОбщийМакетНаСервере().Записать(тРАР); КомандаСистемы(тРАР+" a -ep C:\архив.rar C:\1\"); //КомандаСистемы("C:\Propgram File\WinRAR\Rar.exe a -ep C:\архив.rar C:\1\"); вариант с использованием установленного WinRAR КонецПроцедуры &НаСервере Функция ПолучитьОбщийМакетНаСервере() Возврат ПолучитьОбщийМакет("UnRAR"); КонецФункции |
Распаковка RAR-архива:
1 2 3 4 5 6 7 8 | &НаКлиенте Процедура РаспаковатьRAR(Команда) тРАР = ПолучитьИмяВременногоФайла("exe"); ПолучитьОбщийМакетНаСервере().Записать(тРАР); КомандаСистемы(тРАР+" e C:\архив.rar C:\2\"); КонецПроцедуры |
Код достаточно прост и, как видно, вся суть заключается в правильном синтаксисе командной строки, хороший справочник по командам и ключам rar.exe/unrar.exe можно найти тут.
Если в архиве несколько папок, как мне извлечь файлы только из определенной папки в архиве?