1 (изменено: dob, 2011-02-28 12:27:44)

Тема: AHK: Есть папка нужно её заархивировать

Здравствуйте, у меня до вас вопрос.
Как можно осуществить чтобы скрипт архивировал папку?

Например:
Есть папка с файлами которая находится D:\File\New Folder ее надо архивировать в .zip в ту же директорию...

Помогите пожалуйста.

2

Re: AHK: Есть папка нужно её заархивировать

Вот пробовал но не получилось к сожалению.

FilesToZip = D:\File\New Folder
; FilesToZip := A_ScriptFullPath   
sZip := A_ScriptDir . "\New Folder.zip"  
sUnz := A_ScriptDir . "\ext\"      

Zip(FilesToZip,sZip)
Sleep, 500
Unz(sZip,sUnz)

3

Re: AHK: Есть папка нужно её заархивировать

А сами функции Zip() и Unz() где?

Пример от сюда я так понял http://www.autohotkey.com/forum/topic65401.html.
Там есть полная версия.

4

Re: AHK: Есть папка нужно её заархивировать

OFF: Можно перетащить значок нужного файла на пиктограмму файла "Сжатая ZIP-папка.ZFSendToTarget". Что в это время творит Explorer, и можно ли это проделать через командную строку - не знаю.

5

Re: AHK: Есть папка нужно её заархивировать

Ой извините то вообще скрипт для Autohotkey_L
А я пользуюсь обычной Autohotkey

6

Re: AHK: Есть папка нужно её заархивировать

Люди пожалуйста помогите очень нужно.

7

Re: AHK: Есть папка нужно её заархивировать

Ссылка выше. В чем проблема использовать ahk_L?

8 (изменено: dob, 2011-02-28 16:06:27)

Re: AHK: Есть папка нужно её заархивировать

А скрипты от ahk_L подходят к ahk?

И я по той ссылке работал ток ничего толком не получилось:(

9 (изменено: InFlames, 2011-02-28 16:38:03)

Re: AHK: Есть папка нужно её заархивировать

Должны работать.

Я проверил скрипт по ссылке выше, всё работает с AHK_L.

Если не хотите устанавливать AHK_L его можно запускать из AHK basic с параметрами.
Что-то вроде. Код не тестировал. Возможно надо исключать возможность появления пробелов в путях к файлам.

;скрипт для AHK basic для запуска AHK_L

; путь к autohotkey.exe (AHK_L)
AHKL=D:\ahk_l\autohotkey.exe

;путь к скрипту для AHK_L
AHKL_script = D:\ahk_l\script.ahk

;запуск скрипта AHK_L
run %AHKL% %AHKL_script%

Вот сам autohotkey.exe (AHK_L).

10

Re: AHK: Есть папка нужно её заархивировать

Все таки у меня ничего не получилось к сожалению

Но все же я не сдаюсь, искал и вот нашел интересную библиотеку zipfldr.dll
Люди писали что можно с помощью её как то заархивировать...

Никто не подскажет как?

11

Re: AHK: Есть папка нужно её заархивировать

Как я понял, Explorer.exe как-то взаимодействует с этой библиотекой. Как именно - не знаю.
Сжатая ZIP-папка.ZFSendToTarget=@zipfldr.dll,-10148

zipfldr.dll является COM-сервером, но не содержит tlb файла внутри. также нет этого tlb снаружи.
ProgID = CompressedFolder
CLSID = {E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}
сталобыть, скрипты не смогут работать с zipfldr.dll
только через ЯВУ, если известно описание интерфейсов.

Источник

12

Re: AHK: Есть папка нужно её заархивировать

Если установлен архиватор WinRar, можно архивировать с его помощью через посредство AHK.

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

13

Re: AHK: Есть папка нужно её заархивировать

Заинтересовала меня встроенная возможность Windows работы с архивами, поиск привёл к следуюшему:

Run, %comspec%
WinWait, ahk_class ConsoleWindowClass
;~ встроенная утилита Windows для архивирования
Send makecab /?{Enter}
;~ для разархивирования
Send expand /?{Enter}

В Windows можно открыть cab архив с помощью проводника так, как мы это делаем с zip файлами, но эта возможность может быть отключена, решением для Windows XP будет перерегистрация встроенной библиотеки:

regsvr32 /u cabview.dll
regsvr32 cabview.dll

источник

Интересности:

http://www.codeproject.com/KB/files/CAB … tract.aspx

Одна из многочисленных тем на oszone.net о cab архивах

Microsoft Cabinet Format

Microsoft Cabinet SDK

Run, iexpress

IExpress - встроенный в Windows архиватор, позволяет создавать самораспаковывающиеся архивы

Using the Cabinet API

Cabinet API Functions

Альтернативные решения:

Zlib wikipedia

Руководство на русском

Zlib - autohotkey

в заключение хотелось бы спросить можно и нужно ли использовать именованные каналы для работы с утилитами, а результатом мог бы быть довольно удобный архиватор (по аналогии с DynaRun() или Scripting on the fly (from any textual source)