Что нового

Архивация файлов/папок по checkbox

k790

Новичок
Сообщения
239
Репутация
1
Подскажите, как сделать архивирование файлов, если файлы выбираются через чекбокс.
То есть у меня 12 файлов/папок, надо заархивировать только выбранные и в один архив
Код:
$Button_ALL = GUICtrlCreateButton("Выделить всё", 378, 20, 139, 21, $WS_GROUP)
        Case $Button_ALL
            Local $var, $count=0, $MaxCount = 12
            For $i = $Checkbox1 To $Checkbox12 Step 1
                $var = GUICtrlRead($i)
                If $var = 1 Then
                    For $i = $Checkbox1 To $Checkbox12 Step 1
                        GUICtrlSetState($i, $GUI_UNCHECKED)
                    Next
                ElseIf $var = 4 Then
                    $count = $count + 1
                    If $Count = $MaxCount Then
                        For $i = $Checkbox1 To $Checkbox12 Step 1
                            GUICtrlSetState($i, $GUI_CHECKED)
                        Next
                    EndIf
                EndIf
            Next
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
k790
К чему этот код?

Я не понимаю твой вопрос, у тебя же получилось сделать то что ты хочешь, ты бы написал, что конкретно тебе нужно?
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Это для бэкапа оперы, когда он выполняет бэкап - он должен по галочкам вывести конечный файл в Op.zip, то есть не отдельно по одному файлу, а сразу, список нужных собирает и за один рас всё делает
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
k790 [?]
то есть не отдельно по одному файлу, а сразу, список нужных собирает и за один рас всё делает
У 7-zip есть опция архивирования по списку (см. описание функций).
Как проверять отметку птички думаю ты знаешь, а остальное дело простое - собираешь список файлов в переменную, потом пишешь её в файл, и далее скармливаешь этот файл 7-zip'у.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
CreatoR [?]
У 7-zip есть опция архивирования по списку (см. описание функций).
А ты можешь сказать где именно это написано, а то никак не могу найти :( :wacko: :scratch:
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
#include <Zip.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 203, 137, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("notepad.exe", 24, 16, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("cmd.exe", 24, 40, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("shell32.dll", 24, 64, 97, 17)
$Button1 = GUICtrlCreateButton("Arhive", 64, 96, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			If GUICtrlRead($Checkbox1) = $GUI_UNCHECKED And GUICtrlRead($Checkbox2) = $GUI_UNCHECKED And GUICtrlRead($Checkbox3) = $GUI_UNCHECKED Then
				MsgBox(0, '', 'Не выбранны файлы')
			Else
				$save = FileSaveDialog('Choose folder.', @ScriptDir, 'Zip arhive (*.zip)')
				$arhive = _Zip_Create($save & '.zip')
				If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then _Zip_AddFile($arhive, @SystemDir & '\notepad.exe')
				If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then _Zip_AddFile($arhive, @SystemDir & '\cmd.exe')
				If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then _Zip_AddFile($arhive, @SystemDir & '\shell32.dll')
				MsgBox(0, '', 'Архив создан !')
			EndIf
	EndSwitch
WEnd


7zip UDF можешь скачать ТУТ
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
k790 [?]
ты можешь сказать где именно это написано, а то никак не могу найти
В описаний к 7zip UDF:

$sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files

Вот так примерно:

Код:
_7ZipAdd(0, "C:\Archive.zip", '', 1, 5, 1, "@C:\Temp\Files.lst")

Files.lst содержит список архивируемых файлов.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
А как папки архивировать этим способом? :-[
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
аууууууууу :laugh: :whistle: :IL_AutoIt_1:
 

agikon

Знающий
Сообщения
789
Репутация
17
например надо заархивировать папку "top" которая лежит в системной папке
Код:
If  GUICtrlRead($Checkbox1) = $GUI_CHECKED Then  _Zip_AddFile($arhive, @SystemDir & '\top\')
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
CreatoR [?]
Указываешь путь к каталогу и всё, в чём проблема?
Проблема в том, что папки он не архивирует, файлами вопросов нет, а вот папки никак


Добавлено:
Сообщение автоматически объединено:

может синтаксис
 

agikon

Знающий
Сообщения
789
Репутация
17
слеш в конце не забывайте ставить.
может забываете?
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Код:
#include <7Zip.au3>
_7ZipAdd(0, @DesktopCommonDir & "\Archive.zip", '', 1, 5, 1, "@C:\Temp\Files.lst")


Код:
C:\Intel\Logs
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
k790
Что содержит файл «Files.lst»?
 
Верх