1 (изменено: belyankin12, 2017-02-15 22:58:35)

Тема: AHK: Распаковка Zip-архива

Здравствуйте. В общем я планирую переделать код автообновления скрипта, что я распространяю, ввиду особенностей, а точнее недостатков компьютеров моих юзеров. Из перспективных идей - скачивание zip-архива с сервера и его распаковка. Возможно ли распаковать zip'ы через AHK? Если будете пытаться помочь, то очень желательно использовать встроенный в виндовс архиватор (названия не знаю, но он zip'ы читает). Ну а если уже никак, то подключать дополнительные программы, но желательно winrar.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

2

Re: AHK: Распаковка Zip-архива

ArcPath = C:\Test.zip
OutPath = C:\Папка распаковки

Shell := ComObjCreate("Shell.Application")
Items := Shell.NameSpace(ArcPath).Items
Items.Filter(73952, "*")
Shell.NameSpace(OutPath).CopyHere(Items, 16)

3

Re: AHK: Распаковка Zip-архива

Этот скрипт нужно поместить в Коллекцию. Уже не раз задавали вопросы по zip-архивам.

4

Re: AHK: Распаковка Zip-архива

Почему-то я был уверен, что как только найдется решение, его захотят в коллекцию закинуть. Спасибо.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

5

Re: AHK: Распаковка Zip-архива

ypppu
Ну, этой темке 100 лет в обед (были ещё такие: 1, 2).
Поэтому даже не знаю. Надо это всё культурно причёсывать в функции (раскаковки, упаковки).
Кстати говоря (для тех, кто в танке), после установки этой вещи помимо ZIP можно таким образом ещё кучу всяких разных форматов читать/распаковывать.

stealzy
Сабж не обязывает выкладывать именно сюда скрипт автообновления. Можете создать свой топик при желании.

6

Re: AHK: Распаковка Zip-архива

Flasher, это все сторонние средства, при чем тут они? Выкладывать в этот топик разумеется не собираюсь.

7

Re: AHK: Распаковка Zip-архива

stealzy
Все сторонние средства? Какие все?

8

Re: AHK: Распаковка Zip-архива

Flasher, ценность в том, что работает именно на AutoHotkey и без установки доп. программ.

9

Re: AHK: Распаковка Zip-архива

ypppu
Т.е. ценность на vbs/js вдвое больше?

10 (изменено: Malcev, 2017-02-16 01:23:30)

Re: AHK: Распаковка Zip-архива

Flasher, я бы добавил для разъяснения:

' Необходимая группа флагов фильтрации:
Const SHCONTF_FOLDERS = 32 ' папки
Const SHCONTF_NONFOLDERS = 64 ' не папки (файлы)
Const SHCONTF_INCLUDEHIDDEN = 128 ' скрытые несистемные элементы
Const SHCONTF_FASTITEMS = 8192 ' ускорение поиска (по индексации)
Const SHCONTF_INCLUDESUPERHIDDEN = 65536 ' скрытые системные элементы
Flags = SHCONTF_INCLUDEHIDDEN + SHCONTF_FASTITEMS + SHCONTF_INCLUDESUPERHIDDEN

11

Re: AHK: Распаковка Zip-архива

Malcev
Да это всё понятно. Если есть время и желание опубликовать, то вперёд.

12

Re: AHK: Распаковка Zip-архива

По-моему, фильтры здесь вообще не нужны.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Распаковка Zip-архива

Скрытые файлы не попадут + индексация.

14

Re: AHK: Распаковка Zip-архива

Flasher пишет:

Скрытые файлы не попадут

Точно не попадут? Про индексацию, честно говоря, не знаю.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Распаковка Zip-архива

Точно-точно. Я давно на VBS этим промышляю.

16

Re: AHK: Распаковка Zip-архива

Тогда странно, у меня прекрасно попадают без всех фильтров.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Распаковка Zip-архива

Не исключаю, что влияют ещё какие-то нюансы системы (битность, версия библиотеки).

18

Re: AHK: Распаковка Zip-архива

Ну, я здесь небольшой спец, но гугл об этом ничего не знает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Распаковка Zip-архива

Сделал тест - если не указывать ничего в фильтрах, то все работает.
Если же указать, хоть один из них, например индексирование, то надо указывать и все остальные.

20

Re: AHK: Распаковка Zip-архива

Malcev
Так а скрытые файлы внутри были?

Malcev пишет:

то надо указывать и все остальные

Нет. Не все. )))

21

Re: AHK: Распаковка Zip-архива

Malcev пишет:

например индексирование

Э-э-э... А какой фильтр за индексирование отвечает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: Распаковка Zip-архива

Malcev пишет:

Const SHCONTF_FASTITEMS = 8192 ' ускорение поиска (по индексации)

У меня брал.

23

Re: AHK: Распаковка Zip-архива

Так а скрытые файлы внутри были?

Да. При том скрытые файлы у меня распаковывает без указания SHCONTF_INCLUDESUPERHIDDEN и SHCONTF_INCLUDEHIDDEN.
Так работает:

ArcPath = C:\NTUSER.zip
OutPath = C:\TEMP
Shell := ComObjCreate("Shell.Application")
Items := Shell.NameSpace(ArcPath).Items
Shell.NameSpace(OutPath).CopyHere(Items, 16)

Либо так:

ArcPath = C:\NTUSER.zip
OutPath = C:\TEMP
Shell := ComObjCreate("Shell.Application")
Items := Shell.NameSpace(ArcPath).Items
Items.Filter(8192+64, "*")
Shell.NameSpace(OutPath).CopyHere(Items, 16)

24

Re: AHK: Распаковка Zip-архива

Malcev
Ну, вы, поди, на одной системе сидите. Я на Win 7 x86. Тут у меня иначе. На XP, ЕМНИП, тоже.

25

Re: AHK: Распаковка Zip-архива

По-моему, это не совсем то:

ShObjIdl.idl пишет:

SHCONTF_FASTITEMS               = 0x02000,   // hint that client is only interested in items that can be enumerated quickly

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

26

Re: AHK: Распаковка Zip-архива

Здесь про only ничего не написано, да и не подтверждалось тестами.

27 (изменено: teadrinker, 2017-02-16 03:55:00)

Re: AHK: Распаковка Zip-архива

Ну, не поленился, проверил: архив в 300 MB с большим количеством разных файлов — что с этим фильтром, что без него — примерно одинаково, без него даже быстрее получилось.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

28

Re: AHK: Распаковка Zip-архива

Данный фильтр нужен-то в основном при больших списках. При маленьких поиск индексированного, конечно, лишний.

29 (изменено: belyankin12, 2017-02-16 15:02:30)

Re: AHK: Распаковка Zip-архива

Stealzy, спасибо за предложение. Мой код автообновления работает отлично, хоть я его написал криво очень (сейчас, когда набрался опыта, мне легко судить, ага ), но мне лень его переписывать - он отлично выполняет свою функцию. Проблема в том, что у некоторых пользователей некоторые файлы не загружаются. То ли вина хостинга, то ли ОС - не пойму. Сам никогда такого не встречал, у меня 100 из 100 работает. Просто хочу добавить для таких невезучих кнопку: "Скачать вручную", где они скачают zip-архив с обновлением, запихнут его в папку с скриптом и запустят скрипт, а тот его распакует и обновится. Вот так и живем.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

30

Re: AHK: Распаковка Zip-архива

teadrinker
Здравствуйте, а можно ли сделать так что бы он делал это в фоновом режиме, незаметно для пользователя?
У меня вот это работает.

ArcPath = C:\Test.zip
OutPath = C:\Папка распаковки

Shell := ComObjCreate("Shell.Application")
Items := Shell.NameSpace(ArcPath).Items
Items.Filter(73952, "*")
Shell.NameSpace(OutPath).CopyHere(Items, 16)

31

Re: AHK: Распаковка Zip-архива

Попробуйте поменять 16 на 20.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

32

Re: AHK: Распаковка Zip-архива

teadrinker
Всё работает, спасибо большое