Meine ZIP UDF

  • €€: Version 2 Mit ISO erzeugen / entpacken..nach bernd670's "Anleitung in einem Thread"...RAR entpacken geht auch , mit _extractAll, .rar schreiben aber nicht (ausser WinRar ist inst.)


    Hi :)

    es gibt ja viele ZIP lösungen, aber wirklich gefallen tut mir keine :(
    ALso hab ich mir selber eine gebalstet, eine UDF, basierend auf 7zip!

    es gibt derzeit 4 funcs, die da sind:


    *) Datei in ein ZIP archiv
    *) Ganzer Inhalt eines Ordners in ZIP archiv
    *) Inhalt eines ZIP archives entpacken in Zielverz.
    *) Inhalt anschauen vom ZIP archiv


    genauer:


    Spoiler anzeigen
    Code
    ExtractAll($packed, $target) : Entpackt das archiv $packed ins verzeichniss $target
    _FileToARchive($path, $packed) : Packt eine Datei in ein Archiv namens $packed  ($packed muss der Zielpfad, also zb C:\Ziel.zip sein, Ausgabe ist ZIP Format!
    _listArchive($packed) : Gibt den Inhalt und Infos der gepackten Datei zurück - als array! benutzung zb: _ArrayDisplay(_listArchive("C:\Programme\7-Zip\asd\222.zip"))
    _dirToArchive($dir, $packed, $sub = 1) : Kopiert einen gesamten ordner - inklusive unterordner - des verzeichnisses $dir (ZB: C:\Programme\7-Zip) in das Archiv $packed!
    											WEnn KEINE unterordner kopiert werden sollen, so aufrufen: _DirToArchive("C:\Programme\7-Zip\, "C:\lol\lol.zip\, 0) !

    hier der code (unten auch zum dowload mit 7z.exe und lizenz!)

    Spoiler anzeigen
    [autoit]

    #cs

    [/autoit] [autoit][/autoit] [autoit]

    ZIP UDF by Huggy
    +++++++++++++++++++++++++#########++++++++++ FUNKTIONEN ###############+++++++++++###############
    _ExtractAll($packed, $target) : Entpackt das archiv $packed ins verzeichniss $target
    _FileToARchive($path, $packed) : Packt eine Datei in ein Archiv namens $packed ($packed muss der Zielpfad, also zb C:\Ziel.zip sein, Ausgabe ist ZIP Format!
    _listArchive($packed) : Gibt den Inhalt und Infos der gepackten Datei zurück - als array! benutzung zb: _ArrayDisplay(_listArchive("C:\Programme\7-Zip\asd\222.zip"))
    _dirToArchive($dir, $packed, $sub = 1) : Kopiert einen gesamten ordner - inklusive unterordner - des verzeichnisses $dir (ZB: C:\Programme\7-Zip) in das Archiv $packed!
    WEnn KEINE unterordner kopiert werden sollen, so aufrufen: _DirToArchive("C:\Programme\7-Zip\, "C:\lol\lol.zip\, 0) !
    #ce

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <File.au3>
    #include <Array.au3>
    DIM $array
    DIM $datein

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;############Bereit machen für Funktionen###############

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    if FileExists(@ScriptDir & "\7z.exe") Then
    FileCopy(@ScriptDir & "\7z.exe", @TempDir & "\7z.exe")
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FileInstall("C:\Programme\7-Zip\7z.exe", @TEmpDir & "\7z.exe") ; wenn Compiled, wird 7z.exe ins TempDir geschoben
    sleep(50)

    [/autoit] [autoit][/autoit] [autoit]

    if FileExists(@TEmpDir & "\7z.exe") Then ; sollte es nicht compiliert sein, oder einfach ein fehler, dann schau in der Registry ob installiert
    ;nix ;P
    Else
    $pfad = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip", "Path")
    $check = FileCopy($pfad & "\7z.exe", @TempDir & "\7z.exe")

    sleep(50)

    If FileExists(@ScriptDir & "\7z.exe") AND if NOT FileExists(@tEmpDir & "\7z.exe")Then

    FileCopy(@ScriptDir & "\7z.exe", @TempDir & "\7z.exe")


    Else

    MsgBox(0, "ERROR", "KONNTE 7z.exe nicht finden!")


    Endif

    EndIf
    ;####################Fertig für Funktionen###############
    Func _ExtractAll($packed, $target)
    FileWrite(@TEmpDir & "\7t.bat", "@Echo off" & @Crlf)
    FileWrite(@TEmpDir & "\7t.bat", "7z.exe x -o"&$target&" " & $packed & @Crlf)
    FileWrite(@TEmpDir & "\7t.bat", "exit" & @Crlf)
    sleep(200)
    Run(@TempDir & "\7t.bat", @TempDir)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileToArchive($path, $packed)
    FileWrite(@TEmpDir & "\7z.bat", "@Echo off" & @Crlf)
    FileWrite(@TEmpDir & "\7z.bat", "7z.exe a -tzip "& $packed &" " & $path & @Crlf)
    Run(@TEmpDir & "\7z.bat", @tempdir)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _dirToArchive($dir, $packed, $sub = 1)
    FileWrite(@TEmpDir & "\7a.bat", "@Echo off" & @Crlf)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    if $sub <> 1 Then
    FileWrite(@TEmpdir & "\list.txt", $dir & "\*.*")

    Else

    FileWrite(@TEmpdir & "\list.txt", $dir & "\*")

    Endif
    FileWrite(@TEmpDir & "\7a.bat", "7z.exe a -tzip "& $packed & " @list.txt")

    [/autoit] [autoit][/autoit] [autoit]


    Run(@TempDir & "\7a.bat", @TEmpDir)
    sleep(10000)

    FileDelete(@TempDir & "\*.bat")
    EndFunc


    Func _listArchive($packed)
    sleep(500)
    FileWrite(@TEmpDir & "\7w.bat", "@Echo off" & @Crlf)
    FileWrite(@TEmpDir & "\7w.bat", "7z.exe l " & $packed &" >> " &@TempDir & "\archiv.txt")
    sleep(100)
    Run(@TEmpDir & "\7w.bat", @tempdir)
    sleep(200)
    _FileReadTOarray(@TempDir & "\archiv.txt", $array)
    RETURN $array
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FileDelete(@TempDir & "\*.bat")

    [/autoit] [autoit][/autoit] [autoit]

    FileDelete(@TempDir & "\*.txt")

    [/autoit]


    Mfg

    Huggy

    ps: kritik los!! :)

    2 Mal editiert, zuletzt von huggy (16. August 2007 um 17:55)

  • Hi Huggy!

    Nützlich ist es allemal, aber eines verstehe ich dabei nicht. Warum erstellst Du eine temporäre Batch-Datei? Ich konnte das jetzt nicht testen, aber könntest Du die Kommandozeilenparameter von 7zip nicht einfach über _RunDos laufen lassen? Das sollte doch auch funktionieren und ein paar Zeilen sparen.

    Grüße

  • Könnte ich, aber gibt bei mir manchmal probleme, das _runDos nichts macht...da geh ich lieber auf nummer sicher und stell ne bat rein :)

  • huhu,

    deine udf schreibt bei _extractall() eine batch datei, die falsch formatiert ist.
    die anderen funktionen hab ich nicht durchgesehen, weil ich sie noch nicht brauchte ^^"
    (getestet mit 7zip standalone version 9.06)

    richtiges format mit diesem code:

    Spoiler anzeigen
    [autoit]


    Func _ExtractAll($packed, $target)
    FileWrite(@TEmpDir & "\7t.bat", "@Echo off" & @Crlf)
    FileWrite(@TEmpDir & "\7t.bat", "7z.exe x " & $packed & " -o" & $target & @Crlf)
    FileWrite(@TEmpDir & "\7t.bat", "exit" & @Crlf)
    sleep(200)
    Run(@TempDir & "\7t.bat", @TempDir)
    EndFunc

    [/autoit]

    greetings bocky