Автор Тема: Как распаковать архив zip с помощью скрипта _Zip_UnzipAll.au3  (Прочитано 531 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн alex2887 [?]

  • Новичок
  • *
  • Сообщений: 32
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет, объясните пожалуйста, как распаковать архив zip с помощью скрипта
#Include <_Zip.au3>
_Zip_UnzipAll($sZipFile, $sDestPath[, $iFlag = 20])
Есть архив, который лежит на диске с:, мне нужно распаковать его содержимое на диск D: в папку Тест. Если не трудно, напишите как это должно будет выглядеть, заранее спасибо.
Вот так вот я пробовал, но ничего не получается
#Include <_Zip.au3>
_Zip_UnzipAll('C:\AIMP.zip', 'D:\Тест')

Русское сообщество AutoIt


Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 666
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
У меня Ваш пример отработал нормально. В консоли ошибки пишет ? Существует ли у Вас папка назначения "Тест"?
На всякий случай мой вариант библиотеки, а то какое-то странное значение флага в Вашем варианте - "20" , у меня он может быть либо "0" либо "1".


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн alex2887 [?]

  • Новичок
  • *
  • Сообщений: 32

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
У меня Ваш пример отработал нормально. В консоли ошибки пишет ? Существует ли у Вас папка назначения "Тест"?
На всякий случай мой вариант библиотеки, а то какое-то странное значение флага в Вашем варианте - "20" , у меня он может быть либо "0" либо "1".
Да, папка "Тест" существует, пишет вот такую ошибку при выполнении:
C:\_Zip_UnzipAll.au3 (1) : ==> Error opening the file.:
#Include<_Zip.au3>

Помечен как лучший ответ пользователем alex2887 Отправлен Апрель 21, 2017, 10:51:44

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 666
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Он пишет , что ошибка открытия "_Zip.au3" он точно так называется ? Впереди в названии UDF есть эта черта "_"если нет - уберите её , файл лежит рядом со скриптом или в папке "include" в дирректории с AutoIt ?

Русское сообщество AutoIt

Re: Как распаковать архив zip с помощью скрипта _Zip_UnzipAll.au3
« Ответ #3 Отправлен: Апрель 21, 2017, 10:31:24 »

Оффлайн alex2887 [?]

  • Новичок
  • *
  • Сообщений: 32

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Извините что отнимаю Ваше время, но я вообще ничего не понял по этим скриптам, в голове теперь у меня каша.... Как их правильно оформлять, что за чем идет.... :'( Походу это просто не мое. Я прочитал справку, но там все так запутано, что без поллитра там не разобраться :'(

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 666
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вот Ваш код:
Код: AutoIt [Выделить]
#Include <Zip.au3>
_Zip_UnzipAll('C:\AIMP.zip', 'D:\Тест')

В первой строке Вы включаете  библиотеку с дополнительными, пользовательскими функциями в свой скрипт. Функция "_Zip_UnzipAll" есть в UDF "Zip.au3", вот Вы её и подключаете. Вот, что пишут в справке :
Цитировать
Если используется <...>, путь к файлу вычисляется относительно каталога библиотек для включения (обычно C:\Program Files\AutoIt3\Include). Эти библиотеки содержат огромнейшее число пользовательских функций для использования!
Если эта UDF не идёт в стандартном наборе с AutoIt, а Вы её скачали отдельно, то её необходимо поместить в папку "C:\Program Files\AutoIt3\Include"(для 32 битной версии Windows, для х64 будет "C:\Program Files (x86)\AutoIt3\Include")или поместить в папку рядом со скриптом. Ошибка, что у Вас говорит о том, что не найдена эта самая UDF , причины - название отличается от того, что указали в скрипте, либо её вообще нет по выше указанному пути.

Оффлайн alex2887 [?]

  • Новичок
  • *
  • Сообщений: 32

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o, спасибо за то что помогаете, Вы можете мне написать этот скрипт так, как он должен быть написан, если Вас не затруднит? А то я никак не могу понять как это сделать

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 666
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Для разархивирования файла - там всего две строчки , я их написал в прошлом сообщении. Просто скопируйте файл "Zip.au3" (можно и рядом со скриптом положить) и запустите скрипт, если будут ошибки - напишите.
Вот, запустите этот скрипт и скажите, какую ошибку пишет в консоли
Код: AutoIt [Выделить]
#Include <Zip.au3>
_Zip_UnzipAll('C:\AIMP.zip', 'D:\Тест')
ConsoleWrite('Ошибка №'&@error&@CR)

« Последнее редактирование: Апрель 21, 2017, 13:23:36 от ra4o »

Русское сообщество AutoIt

Re: Как распаковать архив zip с помощью скрипта _Zip_UnzipAll.au3
« Ответ #7 Отправлен: Апрель 21, 2017, 13:15:51 »

Оффлайн alex2887 [?]

  • Новичок
  • *
  • Сообщений: 32

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o, спасибо Вам большое, все получилось. И тогда можно еще один вопрос задать? Что в этом скрипте означает, написанное начиная с   "Local $DLLChk = _Zip_DllChk()" и заканчивая  "EndFunc   ;==>_Zip_UnzipAll" ? Как это называется и что означает

Код: AutoIt [Выделить]
Func _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(2, 0, 0) ;no zip file
    If Not FileExists($hDestPath) Then DirCreate($hDestPath)
    Local $aArray[1]
    $oApp = ObjCreate("Shell.Application")
    $oApp.Namespace($hDestPath).CopyHere($oApp.Namespace($hZipFile).Items)
    For $item In $oApp.Namespace($hZipFile).Items
        _ArrayAdd($aArray, $item)
    Next
    While 1
        If $flag = 1 then _Hide()
        If FileExists($hDestPath & "\" & $aArray[UBound($aArray) - 1]) Then
            Return SetError(0, 0, 1)
            ExitLoop
        EndIf
        Sleep(500)
    WEnd
EndFunc   ;==>_Zip_UnzipAll
 


Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 666
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Если пролистаете дальше UDF "Zip.au3" , то увидите функцию _Zip_DllChk()
(нажмите для показа/скрытия)
которая проверяет наличие библиотеки  "zipfldr.dll"  в @SystemDir и проверяет регистрацию в системе этой dll через ключ реестра "HKEY_CLASSES_ROOT\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}"
Не понял сразу вопрос  :-[
Это всё и есть тело функции "_Zip_UnzipAll()"

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3989
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
alex2887

ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитировать
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.

Скорблю и помню.




Русское сообщество AutoIt

Re: Как распаковать архив zip с помощью скрипта _Zip_UnzipAll.au3
« Ответ #10 Отправлен: Апрель 21, 2017, 17:10:10 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
25 Ответов
29390 Просмотров
Последний ответ Январь 18, 2016, 02:21:12
от yrus
9 Ответов
4803 Просмотров
Последний ответ Сентябрь 09, 2011, 22:23:16
от armenxxx1
18 Ответов
7504 Просмотров
Последний ответ Декабрь 27, 2011, 21:36:04
от StarEdik
2 Ответов
1949 Просмотров
Последний ответ Январь 28, 2012, 22:38:42
от alexandr
1 Ответов
2082 Просмотров
Последний ответ Февраль 25, 2012, 19:06:17
от La2Angel
2 Ответов
2470 Просмотров
Последний ответ Апрель 30, 2012, 00:31:58
от CreatoR
2 Ответов
2747 Просмотров
Последний ответ Июнь 06, 2012, 07:37:47
от Sky-WaLkeR
7 Ответов
3563 Просмотров
Последний ответ Май 03, 2015, 12:38:25
от .me
5 Ответов
1599 Просмотров
Последний ответ Январь 17, 2016, 00:49:20
от Alofa
1 Ответов
153 Просмотров
Последний ответ Ноябрь 13, 2017, 10:30:22
от Tyr