Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.137.169] |
|
Сообщ.
#1
,
|
|
|
В общем, надо заархивировать папку %temp%\dir\ в только что созданный архив %temp%\dir.zip в VB6. У меня получилось:
Option Explicit Dim Tmp As String Dim Zip As New Shell Dim ZipFile As String Dim fso As New FileSystemObject Dim ts As TextStream Dim WhatToZip As String Tmp = Environ("temp") ' Делаем Tmp равной местонахождению папки %temp% ZipFile = Tmp + "\Dir.ZIP" WhatToZip = Tmp + "\dir\" Set ts = fso.OpenTextFile(Path & "\Dir.ZIP", ForWriting, True) ' Создается файл ts.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) ' Этот файл превращается в ZIP ts.Close ' Закрывается этот файл Set Zip = CreateObject("Shell.Application") Zip.NameSpace(ZipFile).CopyHere Zip.NameSpace(WhatToZip) ' И в этот ZIP файл архивируется папка Но выдается ошибка: run-time error 91 Если использовать: Zip.NameSpace((ZipFile)).CopyHere Zip.NameSpace((WhatToZip)) Снова выдается ошибка run-time error '-2147024894' (80070002) automation error Помогите пожалуйста, уже много чего перепробывал, всё равно ошибка. Прошу мне не предлагать использование WinRARa в консоли. Заранее спасибо. |
Сообщ.
#3
,
|
|
|
Спасибо. Сейчас буду разбираться, после чего сообщу о результатах.
|
Сообщ.
#4
,
|
|
|
Спасибо за помощь. Единственное - хотелось бы, чтобы моя программа была портативной, а для архивирования требуется, чтобы файл vbzip11.dll находился в папке, которая подлежит архивированию.
|
Сообщ.
#6
,
|
|
|
Цитата dark_timur @ Спасибо за помощь. Пожалуйста. |
Сообщ.
#7
,
|
|
|
Может кому сгодится , без библиотек , код взят из vbs скрипта , пользую давно, код не подводил .
Скрытый текст Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim MySource, MyTarget, MyZipName, MyHex, MyBinary, i Dim oShell, oApp, oFolder, oCTF, oFile Dim oFileSys MySource = "c:\Pic" MyTarget = "c:\Pic.zip" MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) For i = 0 To UBound(MyHex) MyBinary = MyBinary & Chr(MyHex(i)) Next Set oShell = CreateObject("WScript.Shell") Set oFileSys = CreateObject("Scripting.FileSystemObject") Set oCTF = oFileSys.CreateTextFile(MyTarget, True) oCTF.Write MyBinary oCTF.Close Set oCTF = Nothing Set oApp = CreateObject("Shell.Application") Set oFolder = oApp.NameSpace(MySource) If Not oFolder Is Nothing Then oApp.NameSpace(MyTarget).CopyHere oFolder.Items End If |
Сообщ.
#8
,
|
|
|
Цитата yokoshima @ Может кому сгодится , без библиотек , код взят из vbs скрипта , пользую давно, код не подводил . чего??? что там под спойлером за код-то???? так, ну а если по-делу, то еще как вариант можно для этих целей использовать консольный rar.exe Использование: RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...> <@файл-список...> <путь_для_извлечения\> <Команды> a Добавить файлы в архив c Добавить комментарий архива cf Добавить комментарии файлов ch Изменить параметры архива cw Записать комментарий архива в файл d Удалить файлы из архива e Извлечь файлы в текущий каталог f Освежить имеющиеся файлы в архиве i[пар]=<стр> Найти строку в архивах k Заблокировать архив l[t,b] Показать содержимое архива [техинфо,только имена файлов] m[f] Переместить в архив [только файлы] p Извлечь файл на устройство stdout r Исправить повреждённый архив rc Восстановить пропущенные тома rn Переименовать файлы в архиве rr[N] Добавить информацию для восстановления rv[N] Создать тома для восстановления s[модуль|-] Преобразовать архив в/из SFX t Протестировать архив u Обновить файлы в архиве v[t,b] Показать подробно содержимое архива [техинфо,только имена] x Извлечь файлы с полными путями <Ключи> - Прервать дальнейший поиск ключей ac Снять атрибут 'архивный' после архивации или извлечения ad Добавить имя архива к целевому пути ag[формат] Добавить к имени архива текущие дату и время ai Игнорировать файловые атрибуты ao Добавить файлы с установленным атрибутом 'архивный' ap<путь> Указать путь внутри архива as Синхронизировать содержимое архива av Добавить электронную подпись (в зарегистрированной версии) av- Не проверять электронную подпись c- Не показывать комментарии cfg- Запретить чтение конфигурации cl Преобразовывать имена файлов в нижний регистр cu Преобразовывать имена файлов в верхний регистр df Удалить файлы после архивации dh Открывать совместно используемые файлы dr Удалить файлы в Корзину ds Не сортировать файлы при добавлении в непрерывный архив dw Уничтожить (затереть) файлы после архивации e[+]<атр> Исключить/включить в обработку файлы с указанными атрибутами ed Не добавлять пустые каталоги en Не создавать блок 'конец архива' ep Исключить пути из имён ep1 Исключить базовый каталог из имён ep2 Сохранять полные пути файлов ep3 Сохранять полные пути файлов, включая буквы дисков f Освежить имеющиеся файлы hp[пароль] Шифровать содержимое файлов и оглавление архива id[c,d,p,q] Запретить вывод сообщений ieml[адрес] Отправить архив по e-mail ierr Отправлять все сообщения на stderr ilog[имя] Записывать протокол ошибок в файл (в зарегистрированной версии) inul Запретить вывод всех сообщений ioff Выключить компьютер по завершении операции isnd Использовать звуковые сигналы k Заблокировать архив kb При извлечении сохранять на диске повреждённые файлы m<0..5> Метод сжатия (0-без сжатия...3-обычный...5-максимальный) mc<параметр> Установить дополнительные параметры архивации md<размер> Размер словаря, в Кб (64,128,256,512,1024,2048,4096 или A..G) ms[расш;расш] Указать расширения файлов для архивирования без сжатия mt<потоки> Установить число потоков n<файл> Включить в обработку только указанный файл n@ Прочитать имена файлов для включения в обработку с stdin n@<список> Включить в обработку файлы, указанные в файле-списке o[+|-] Установить режим перезаписи oc Устанавливать атрибут NTFS 'сжатый' or Переименовывать файлы автоматически os Сохранять потоки NTFS ow Сохранять/восстанавливать владельца и группу файла p[пароль] Указать пароль шифрования архива p- Не спрашивать пароль r Рекурсивно с подкаталогами r- Запретить рекурсию r0 Рекурсивно с подкаталогами в соответствии с шаблоном ri<P>[:<S>] Приоритет (0-по умолчанию,1-мин..15-макс) и время простоя (мс) rr[N] Добавить информацию для восстановления rv[N] Создать тома для восстановления s[<N>,v[-],e] Создать непрерывный архив s- Запретить создание непрерывных архивов sc<наб>[об] Указать набор символов (и объект) sfx[модуль] Создать самораспаковывающийся (SFX) архив si[имя] Читать данные с устройства стандартного ввода (stdin) sl<размер> Обрабатывать файлы размером меньше указанного sm<размер> Обрабатывать файлы размером больше указанного t Протестировать файлы после архивации ta<дата> Обрабатывать файлы, изменённые после <даты> (ГГГГММДДЧЧММСС) tb<дата> Обрабатывать файлы, изменённые до <даты> (ГГГГММДДЧЧММСС) tk Сохранять исходное время архива tl Устанавливать время архива по времени новейшего файла tn<период> Обрабатывать файлы не старее, чем <период> времени to<период> Обрабатывать файлы более старые, чем <период> времени ts<m,c,a>[N] Хранить/восстанавливать время изменения,создания,доступа файла u Обновить файлы v Создавать архивные тома с автоопределением размера v<N>[k,b,m,M] Создавать архивные тома размером=<N>*1000 [*1024, *1, ...] vd Удалять содержимое сменного диска перед созданием тома ver[n] Управление версиями файла vn Использовать старую схему именования томов vp Делать паузу перед каждым следующим томом w<путь> Использовать указанный каталог для хранения временных файлов x<файл> Не обрабатывать указанный файл/шаблон x@ Прочитать имена исключаемых из обработки файлов с stdin x@<список> Не обрабатывать файлы/шаблоны, указанные в файле-списке y Подразумевать ответ 'Да' на все запросы z[файл] Прочитать комментарий архива из файла |
Сообщ.
#9
,
|
|
|
Цитата Seriy-Coder @ Цитата yokoshima @ Может кому сгодится , без библиотек , код взят из vbs скрипта , пользую давно, код не подводил . чего??? что там под спойлером за код-то???? так, ну а если по-делу, то еще как вариант можно для этих целей использовать консольный rar.exe Использование: RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...> <@файл-список...> <путь_для_извлечения\> <Команды> a Добавить файлы в архив c Добавить комментарий архива cf Добавить комментарии файлов ch Изменить параметры архива cw Записать комментарий архива в файл d Удалить файлы из архива e Извлечь файлы в текущий каталог f Освежить имеющиеся файлы в архиве i[пар]=<стр> Найти строку в архивах k Заблокировать архив l[t,b] Показать содержимое архива [техинфо,только имена файлов] m[f] Переместить в архив [только файлы] p Извлечь файл на устройство stdout r Исправить повреждённый архив rc Восстановить пропущенные тома rn Переименовать файлы в архиве rr[N] Добавить информацию для восстановления rv[N] Создать тома для восстановления s[модуль|-] Преобразовать архив в/из SFX t Протестировать архив u Обновить файлы в архиве v[t,b] Показать подробно содержимое архива [техинфо,только имена] x Извлечь файлы с полными путями <Ключи> - Прервать дальнейший поиск ключей ac Снять атрибут 'архивный' после архивации или извлечения ad Добавить имя архива к целевому пути ag[формат] Добавить к имени архива текущие дату и время ai Игнорировать файловые атрибуты ao Добавить файлы с установленным атрибутом 'архивный' ap<путь> Указать путь внутри архива as Синхронизировать содержимое архива av Добавить электронную подпись (в зарегистрированной версии) av- Не проверять электронную подпись c- Не показывать комментарии cfg- Запретить чтение конфигурации cl Преобразовывать имена файлов в нижний регистр cu Преобразовывать имена файлов в верхний регистр df Удалить файлы после архивации dh Открывать совместно используемые файлы dr Удалить файлы в Корзину ds Не сортировать файлы при добавлении в непрерывный архив dw Уничтожить (затереть) файлы после архивации e[+]<атр> Исключить/включить в обработку файлы с указанными атрибутами ed Не добавлять пустые каталоги en Не создавать блок 'конец архива' ep Исключить пути из имён ep1 Исключить базовый каталог из имён ep2 Сохранять полные пути файлов ep3 Сохранять полные пути файлов, включая буквы дисков f Освежить имеющиеся файлы hp[пароль] Шифровать содержимое файлов и оглавление архива id[c,d,p,q] Запретить вывод сообщений ieml[адрес] Отправить архив по e-mail ierr Отправлять все сообщения на stderr ilog[имя] Записывать протокол ошибок в файл (в зарегистрированной версии) inul Запретить вывод всех сообщений ioff Выключить компьютер по завершении операции isnd Использовать звуковые сигналы k Заблокировать архив kb При извлечении сохранять на диске повреждённые файлы m<0..5> Метод сжатия (0-без сжатия...3-обычный...5-максимальный) mc<параметр> Установить дополнительные параметры архивации md<размер> Размер словаря, в Кб (64,128,256,512,1024,2048,4096 или A..G) ms[расш;расш] Указать расширения файлов для архивирования без сжатия mt<потоки> Установить число потоков n<файл> Включить в обработку только указанный файл n@ Прочитать имена файлов для включения в обработку с stdin n@<список> Включить в обработку файлы, указанные в файле-списке o[+|-] Установить режим перезаписи oc Устанавливать атрибут NTFS 'сжатый' or Переименовывать файлы автоматически os Сохранять потоки NTFS ow Сохранять/восстанавливать владельца и группу файла p[пароль] Указать пароль шифрования архива p- Не спрашивать пароль r Рекурсивно с подкаталогами r- Запретить рекурсию r0 Рекурсивно с подкаталогами в соответствии с шаблоном ri<P>[:<S>] Приоритет (0-по умолчанию,1-мин..15-макс) и время простоя (мс) rr[N] Добавить информацию для восстановления rv[N] Создать тома для восстановления s[<N>,v[-],e] Создать непрерывный архив s- Запретить создание непрерывных архивов sc<наб>[об] Указать набор символов (и объект) sfx[модуль] Создать самораспаковывающийся (SFX) архив si[имя] Читать данные с устройства стандартного ввода (stdin) sl<размер> Обрабатывать файлы размером меньше указанного sm<размер> Обрабатывать файлы размером больше указанного t Протестировать файлы после архивации ta<дата> Обрабатывать файлы, изменённые после <даты> (ГГГГММДДЧЧММСС) tb<дата> Обрабатывать файлы, изменённые до <даты> (ГГГГММДДЧЧММСС) tk Сохранять исходное время архива tl Устанавливать время архива по времени новейшего файла tn<период> Обрабатывать файлы не старее, чем <период> времени to<период> Обрабатывать файлы более старые, чем <период> времени ts<m,c,a>[N] Хранить/восстанавливать время изменения,создания,доступа файла u Обновить файлы v Создавать архивные тома с автоопределением размера v<N>[k,b,m,M] Создавать архивные тома размером=<N>*1000 [*1024, *1, ...] vd Удалять содержимое сменного диска перед созданием тома ver[n] Управление версиями файла vn Использовать старую схему именования томов vp Делать паузу перед каждым следующим томом w<путь> Использовать указанный каталог для хранения временных файлов x<файл> Не обрабатывать указанный файл/шаблон x@ Прочитать имена исключаемых из обработки файлов с stdin x@<список> Не обрабатывать файлы/шаблоны, указанные в файле-списке y Подразумевать ответ 'Да' на все запросы z[файл] Прочитать комментарий архива из файла Нужно просто взять и проверить , я этим кодом постоянно пользуюсь, ни каких проблем . Как я уже говорил код не мой , а выдран из vbs, код отправки архива на мыло. |