Что нового

Как архивировать файл с помощью autoit

Vadimmm0072

Новичок
Сообщения
36
Репутация
2
Версия AutoIt:v3.2.5.4 3.

Описание:
Есть одна папка, ее нужно архивировать в rar или zip средствами autoit. Пробежавшись по форуму нашел библиотеку для работы с архивами тут Но так и не смог с ней разобраться.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Re: Как архивировать файл с помощью avtoit

Vadimmm0072
Посмотри в справке
Код:
RunWait
ShellExecuteWait

Там есть примеры с 7z.exe.
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Re: Как архивировать файл с помощью avtoit

http://www.autoitscript.com/forum/topic/73425-zipau3-udf-in-pure-autoit/

Код:
#include "Zip.au3"
$Zip = _Zip_Create('C:\file.zip')
_Zip_AddFolder($Zip,'C:\file')


Код:
#include "Zip.au3"
_Zip_UnzipAll('C:\file.zip', 'C:\',0)
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Я ползовался _Zip.au3 от wraithdu
Код:
$s_TempFile = _TempFile()
$Zip = _Zip_Create($s_TempFile & "\template_New.zip") ; создаём архив
_Zip_AddItem($Zip, @ScriptDir&'\template\TMP\file.txt') ; добавление по одному файлу
_Zip_UnzipAll($s_TempFile&'\template.zip', $s_TempFile&'\TMP') ; распаковка


Реально добавить папку _Zip_AddFolder в архив, вернее указав содержимое папки, которое нужно добавить в архив я так и не нашёл ни в одной из zip-библиотек, когда делал программу ReplaceTemplateDOCX, пришлось оставить добавление по-файлово. Но так как не экономично перепаковывать архив при каждом добавлении файла (не мой случай, у меня маленький архив), то лучше использовать ком-строку для 7z.exe

Кстати UnRAR_udf, 7zip_udf (в комплекте 7-zip32.dll), Zip_UDF.
 

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
99
Репутация
-1
AZJIO сказал(а):
Код:
$s_TempFile = _TempFile()
$Zip = _Zip_Create($s_TempFile & "\template_New.zip") ; создаём архив
_Zip_AddItem($Zip, @ScriptDir&'\template\TMP\file.txt') ; добавление по одному файлу
_Zip_UnzipAll($s_TempFile&'\template.zip', $s_TempFile&'\TMP') ; распаковка
Как исправить ошибку с длинным именем (При добавлении вылазит окно с двумя кнопками - либо пропустить, либо отменить)? Если такое возможно.
 

MRGYV

Новичок
Сообщения
29
Репутация
0
Re: Как архивировать файл с помощью avtoit

armenxxx1 сказал(а):
http://www.autoitscript.com/forum/topic/73425-zipau3-udf-in-pure-autoit/

Код:
#include "Zip.au3"
$Zip = _Zip_Create('C:\file.zip')
_Zip_AddFolder($Zip,'C:\file')


Код:
#include "Zip.au3"
_Zip_UnzipAll('C:\file.zip', 'C:\',0)

Помогите пожалуйста. На диске D все хорошо. А вот разархивация на сети не работает. Причем в архив нармально добавляет.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.




MRGYV, создай новую тему по своему вопросу
 

Norm

Продвинутый
Сообщения
291
Репутация
76
Способ из справки с 7z не хочет работать, точнее ничего не происходит и ошибок нет.
Библиотека ZIP.au3 выдаёт ошибки в самой библиотеке.

Может есть способ как-то это реализовать средствами самой Windows.
Там ведь есть стандартный способ. Правый клик мыши > отправить > Zip-архив.
Может кто знает как это программного реализовать?
Вот об этом нашёл немного информации, но дальше ....
Или вот ещё
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
надежнее использовать свою библиотеку.
Если ничего не происходит, то должна быть ошибка
откуда взята библиотека 7z?
 

Norm

Продвинутый
Сообщения
291
Репутация
76
надежнее использовать свою библиотеку.
Если ничего не происходит, то должна быть ошибка
откуда взята библиотека 7z?
7z - это лишь строка кода из справки
Код:
; Сжатие файла "Boot.ini" в архив "Archive.7z" с паролем "Мой пароль"
ShellExecuteWait(@ProgramFilesDir & '\7-Zip\7z.exe', 'a "' & @HomeDrive & '\Archive.7z" -p"Мой пароль" -mhe -mx9 "' & @HomeDrive & '\Boot.ini"', '', '', @SW_HIDE)

Но всё это тоже не надежно, поскольку у пользователя может и не быть этой программы-архиватора или она может находится не в директории по умолчанию.
Поэтому стандартные средства Windows били бы надежнее. А как это реализовано, через библиотеку или CMD уже не важно.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Библиотеку и модуль архиватора носим с собой и все будет работать. Большинство программ установки имеет в арсенале свой модуль архиватора
я пользовался 7z.dll и соответствующей библиотекой с форума. потом перешел на 7za.exe. и не важно что установлено у пользователя в системе. наш архиватор работает в любом случае
 
  • Like
Реакции: Norm

Norm

Продвинутый
Сообщения
291
Репутация
76
Поделитесь пожалуйста, если можно, Вашими файлами, или ссылками.
И если не не трудно, пожалуйста пример кода покажите,
заранее благодарю.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
есть стандартный способ. Правый клик мыши > отправить > Zip-архив
В архиве с русской справкой в папке Include находится _Zip.au3, которая работает через COM-объект Shell.Application. Причём в расширении справки AutoIt.chm есть описания входящих в эту UDF функций с примерами
 
  • Like
Реакции: Norm
Верх