#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()