Архивация файлов при помощи программы 7-Zip
Пример архивации при помощи командной строки для 7za.exe.
- Описание
- Подробнее
Описание
Я использую 7za.exe, которая работает только с командной строкой;
ее не нужно устанавливать, достаточно скопировать файл в ‘некий каталог’.
Сайт архиватора: 7-Zip Copyright (C) 1999-2008 Igor Pavlov.
В общем случае алгоритм архивации следующий:
— создаю временный текстовый файл с кодировкой «windows» (по умолчанию),
в который добавляю строки с шаблонами, по которым б.происходить архивация, например:
Т =СоздатьОбъект(«Текст»);
Т.ДобавитьСтроку(ПутьКБ+«*.dbf»);
Т.ДобавитьСтроку(ПутьКБ+«1cv7.MD»);
Т.ДобавитьСтроку(ПутьКБ+«1cv7.DD»);
Т.ДобавитьСтроку(ПутьКБ+«1cv7.ORD»);
Т.ДобавитьСтроку(ПутьКБ+«1cv7.SPL»);
Т.ДобавитьСтроку(ПутьКБ+«UsrDef\Users.usr»);
Т.ДобавитьСтроку(ПутьКБ+«EXTFORMS\*78»);
Т.Записать(КаталогИБ()+«arch_para m.txt»);
строки шаблонов при этом могут содержать пробелы и символы кириллицы
— формирую командную строку:
СтрКоманда=«»»»+ПутьКАрхиватору+«»» a -tzip «»»+КаталогАрхива+ИмяФайлаАрхива+«»» @»»»+ВремФайл+«»» -scsWIN»;
в ней:
— все пути обрамлены кавычками, на тот случай, если встретятся наименования каталогов или файлов с пробелами;
— ПутьКАрхиватору — это ‘некий каталог’\7za.exe
— параметр «-tzip» — указывает, что создаваемый архив будет формата «.zip»;
— (КаталогАрхива+ИмяФайлаАрхива) — полный путь к создаваемому файлу архива;
— ВремФайл — в моем случае файл с шаблонами КаталогИБ()+»arch_param.txt»
— параметр «-scsWIN» — указывает, что кодировка ВремФайл — «windows»
— и наконец, приходится сформировать выполняемый файл с этой командной строкой,
поскольку в общем случае такая командная строка не выполняется непосредственно,
батник же заработал. Связано это, скорее всего, с присутствием символов кириллицы.
Т =СоздатьОбъект(«Текст»);
Т.КодоваяСтраница(1); // Dos кодировка
Т.ДобавитьСтроку(СтрКоманда);
ФайлБатник=КаталогВременныхФайлов()+«tempcs.bat»;
Т.Записать(ФайлБатник);
КомандаСистемы(ФайлБатник);
Главное преимущество такого способа запуска архивации на мой взгляд следующее:
если у в каком-либо модуле присутствует строка КомандаСистемы(…), то программа, в отличии от, в частности, от ЗапуститьПриложение(…), не переходит к следующему оператору модуля до тех пор, пока не закончится архивация. А после этого уже можно приступать к действиям с новым, сформированным архивом: отправлять по почте, копировать куда либо, архивировать что-нибудь еще и т.д.
Более подробно о командах и параметрах 7-Zip можно почитать в «7-zip.chm», который прилагается к программе.