autoit Syntax ZIP Archiv

#include <zip.au3>

 

Create Zipfile:

       $hZipFile = _Zip_Create($sZipFilePath)

 

Add Files to Zip-Archive:

       _Zip_AddFile($hZipFile, @ScriptDir & "\" & $sFileName, 1)

 

Unzip ZipArchive:

       _Zip_UnzipAll($PathCurrent & $ZipFile, $UnzipPath, 0) ; FullPathSource, FullPathTargetDir, flag 0: Show Progress, 1: do not

 


 

Lösung mit 7zip

 

FileInstall("7z.exe","C:\Temp\unzip\",0)

FileInstall("7z.dll","C:\Temp\unzip\",0)

 

$UnzipResult = _Unzip($LogFile)

       _LogWrite($LogFile,@ScriptLineNumber," – UnzipResult: " & $UnzipResult[0] & “ : “ & $UnzipResult[1],$Debug,@error,$WaitTime)

 

Func _Unzip($hLogFile,$TargetDir = @ScriptDir)

;~ Func _Unzip($hLogFile,$TargetDir = @ScriptDir)

;        Parameters:        $hLogFile:        Handle der Logdatei vom aufrufenden Programm

;                                $TargetDir:        Zielverzeichnis, Default = aktuelles Verzeichnis

;        Voraussetzungen:        7z.exe und 7z.dll müssen im aktuellen Verzeichnis liegen

;        Rückgabe:        $Result                1: Erfolg

;                                                        0: Fehler und @error <> 0

;                                                        @error        0:        kein Fehler

;                                                                        1:        7z.exe nicht gefunden

;                                                                        2:        7z.dll nicht gefunden

;                                                                        3:        Archiv nicht gefunden

;                                                                        4:        ZielPfad konnte nicht erstellt werden

;                                                                        5:        $ZipDir konnte nicht erstellt werden

; Definitionen ——————-

FileWriteLine($hLogFile," _Unzip > ———- START of Function ———- ")

       FileWriteLine($hLogFile," _Unzip > ——————————— ")

       FileWriteLine($hLogFile," _Unzip > $TargetDir: " & $TargetDir)

       FileWriteLine($hLogFile," _Unzip > ——————————— ")

       Local $ErrText  = ""

       Local $ErrorCode

       Local $Error[2]

       Local $ZipDir        = "C:\Temp\unzip\"

       Local $ErrText0 = "kein Fehler"

       Local $ErrText1 = $ZipDir & "\7z.exe nicht gefunden"

       Local $ErrText2 = $ZipDir & "\7z.dll nicht gefunden"

       Local $ErrText3 = "Archiv nicht gefunden"

       Local $ErrText4 = "ZielPfad konnte nicht erstellt werden"

       Local $ErrText5 = "$ZipDir konnte nicht erstellt werden"

 

;~        FileWriteLine($hLogFile," _Unzip > $ZipDir: " & $ZipDir & "   Err: " & @error)

 

       if not FileExists($ZipDir & "7z.exe") then

               FileWriteLine($hLogFile," _Unzip > 7z.exe nicht gefunden… ")

               SetError(1)

               $ErrText = $ErrText & @CRLF & "Err 1: " & $ErrText1

       EndIf

 

       if not FileExists($ZipDir & "7z.dll") then

               FileWriteLine($hLogFile," _Unzip > 7z.dll nicht gefunden… ")

               SetError(2)

               $ErrText = $ErrText & @CRLF & "Err 2: " & $ErrText2

       EndIf

 

       if not FileExists($TargetDir) then

               FileWriteLine($hLogFile," _Unzip > ZielPfad: " & '"' & $TargetDir & '"')

               FileWriteLine($hLogFile," _Unzip > ZielPfad nicht gefunden… ")

               DirCreate($TargetDir)

               FileWriteLine($hLogFile," _Unzip > versuchte, ZielPfad zu erstellen… ")

               Sleep(500)

               if not FileExists($TargetDir) Then

                       FileWriteLine($hLogFile," _Unzip > ZielPfad konnte nicht erstellt werden… ")

                       SetError(4)

                       $ErrText = $ErrText & @CRLF & "Err 4: " & $ErrText4

               EndIf

       EndIf

 

  Local $hSearch = FileFindFirstFile(@ScriptDir & "\*.zip")

   If $hSearch = -1 Then

;~    ;     MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern: *.zip")

               FileWriteLine($hLogFile," _Unzip > Error: No files/directories matched the search pattern: *.zip")

               SetError(3)

                       $ErrText = $ErrText & @CRLF & "Err 3: " & $ErrText3

       Return False

   EndIf

       Local $sFileName = "", $iResult = 0

       While 1

       $sFileName = FileFindNextFile($hSearch)

       ; If there is no more file matching the search.

       If @error Then ExitLoop

;~    ;

       ; unzip the file…

       $UnzipExe        = $ZipDir  & "7z.exe x -aoa "

               $CurrDir        = '"' & @ScriptDir & '"'

;~    ;        $UnzipCmd = "cmd.exe /c " & $UnzipExe & $Archive & " -o" & $TargetDir & " & Pause"

               $UnzipCmd = "cmd.exe /c " & $UnzipExe & $sFileName & " -o" & '"' & $TargetDir & '"'

;~    ;

               FileWriteLine($hLogFile," _Unzip > $UnzipExe: " & $UnzipExe)

               FileWriteLine($hLogFile," _Unzip > $CurrDir:  " & $CurrDir)

               FileWriteLine($hLogFile," _Unzip > $TargetDir:" & '"' & $TargetDir & '"')

               FileWriteLine($hLogFile," _Unzip > $UnzipCmd: " & $UnzipCmd)

;~    ;

               $UnzipResult = runwait($UnzipCmd)

               $ErrorCode = @error

               Sleep(1000)

;~    ;

               FileWriteLine($hLogFile," _Unzip > — UnzipResult: " & $UnzipResult)

               FileWriteLine($hLogFile," _Unzip > — Unzip-Error: " & $Error)

   WEnd

 

   FileClose($hSearch)

 

       $Error[0] = @error

       $Error[1] = $ErrText

       FileWriteLine($hLogFile," _Unzip > ———- End of Function ———- ")

 

       Return $Error

EndFunc        ;        _Unzip()