7-Zip und AutoIt

  • Guten Morgen zusammen,

    ich habe eine Frage zu zum oben genannten Thema mit 7Zip. Kann mir jemand eine funktionierende 7Zip UDF zeigen / zukommen lassen? Und wie installiere ich eine UDF? Oder reicht es wenn ich die per #include einbinde? Ich schätze aber mal da erscheinen dann keine Vorschläge, wenn ich einen Befehl / Funktion eingebe?

    Noch eine Frage: Ist es dort dann auch möglich, einen Ordner zu verpacken, indem wiederum Ordner und Dateien existieren?

    Bsp: 01 Lieferungen -> 01 Lieferungen Meier, zweiter Ordner 02 Lieferungen Müller. Und in diesen Ordnern wiederum sind Dateien enthalten.

    Danke im Voraus :)

    LG Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Hallo Mikki !

    Für 7-Zip benötigst Du im Grunde gar keine UDF. Es gibt die stand-alone Version 7za.exe, die man hervorragend über Kommandozeilenbefehle steuern kann. Eine GUI wird dabei nicht angezeigt, der Zip-Vorgang läuft im Hintergrund ab. Aufgerufen wird 7za.exe über Run oder RunWait.

    Die Kommandozeilenbefehle selbst sind sehr umfangreich, damit läßt sich quasi alles machen. Ich hatte vor einiger Zeit bereits einige Beiträge dazu erstellt. Falls zwischenzeitlich keine Antwort von anderen Usern kommen sollte, werde ich Dir dazu Morgen mal ein Beispiel liefern.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Und falls es unbedingt eine UDF für 7zip sein muss, hab ich hier was für dich gefunden

    https://www.autoitscript.com/forum/topic/85094-7zip/

    Aber Downloads solltest du wohl erst auf den beiden letzen Seiten suchen, die älteren Links gibts nicht mehr.

    Und ich hoffe du kannst weniger schlecht Englisch als ich, da gab es einige Diskussionen ich denke du solltest den

    Thread durchackern um mit der UDF umgehen zu können.

    Jetzt hast du schon die Wahl zwischen 7zip Commandline und einer UDF die allerdings schon etwas älter ist.

  • Hallo zusammen,

    danke für die schnellen Antworten. Nein es muss natürlich keine UDF sein.

    Die Idee mit Komandozeilensteuerung bzw mit der Windows eigenen Zip-Funktion finde ich gut, und würde für meine Zwecke völlig ausreichen. Dazu aber noch ein paar Fragen:

    BugFix : Der Code von der _BuildInZip. Was genau muss ich denn damit machen? Den Code in einer .au3-Datei speichern und einbinden?

    Musashi , oh-ha : Die stand-alone muss aber dann auf jedem Rechner vorhanden sein, richtig? Und wie übergebe ich Pfade an die Kommandozeile? Hat jemand ein Beispiel indem z.B. ganze Ordner samt Inhalt gepackt werden? Habe so etwas leider noch nie gemacht.

    Tuxedo : Danke :) Jaaa mein Englisch ist jetzt auch nicht soo das beste, zugegeben. Aber ja die Seite habe ich auch schon gefunden und ausprobiert. Bin aber leider dran gescheitert diese UDF für meine Zwecke einzusetzen.

    Gruß Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Na ganz einfach weil es der Wunsch von Mikki war.

    Und weil eine UDF verfügbar ist.

    Und ausserdem wäre es möglich daß die UDF eventuell in Autoit einfacher handhabbar ist als

    die Commandline Befehle.

    Ich bin sicher nicht der einzige den der sinnlose Gebrauch von Anführungszeichen in den Befehlen Run

    oder ShellExecute in den Wahnsinn treiben, bis es endlich richtig funktioniert.

    Also spart eine UDF möglicherweise einiges an Ärger.

    Ausserdem ist es einfach nur ein Auswahlmöglichkeit mehr.

    Schönes Wochende Tuxedo

    • Offizieller Beitrag

    Der Code von der _BuildInZip. Was genau muss ich denn damit machen? Den Code in einer .au3-Datei speichern und einbinden?

    Das ist eine Funktion. In dein Skript einfügen und die Funktion aufrufen mit den Parametern. Beschreibung siehst du im Funktionskopf.

  • Hallo Mikki !

    Ich hatte vor einiger Zeit in einer 'Konversation' auf Bitte eines Users mal ein kleines Testskript für eine simple Datensicherung erstellt.

    Das dürfte für Dich als Demo aber auch geeignet sein. Es enthält eine kleine GUI und eine Progressbar, aber das sollte Dich nicht stören.

    Lege Dir ein Verzeichnis an, z.B. c:\Autoit\projekte\Ziptest

    Falls Du bereits einen Ordner für eigene Projekte hast, kannst Du natürlich auch den nehmen.

    Die angehängte Datei 'Ziptest.zip' enthält :

    - mein Testskript ZiptestV1.au3

    - die aktuelle 7za.exe sowie die passende Hilfedatei

    - eine Teststruktur zum Packen \SourceDir 

    Diese Daten bitte in den Ordner ..\Ziptest kopieren. Danach sollte der Ordner wie folgt aussehen :

    ZiptestV1.au3 , 7za.exe , 7-zip.chm , \SourceDir

    -> ZiptestV1.au3 im Editor starten/kompilieren

    -> Button [Backup] ==> erzeugt 'Backup.zip' im @ScriptDir (\SourceDir wird gesichert)

    -> Button [Restore] ==> stellt \SourceDir wieder her

    Hier noch mal der Code der ZiptestV1.au3 (identisch zur Version in 'Ziptest.zip') :

    Der relevante Teil findet in der Funktion _Backup statt.

    Zu den obigen Fragen/Kommentaren :

    Musashi , oh-ha : Die stand-alone muss aber dann auf jedem Rechner vorhanden sein, richtig? Und wie übergebe ich Pfade an die Kommandozeile? Hat jemand ein Beispiel indem z.B. ganze Ordner samt Inhalt gepackt werden? Habe so etwas leider noch nie gemacht.

    Ja, die Datei 7za.exe muss vorhanden sein. Beispiel s.o. Die Hilfedatei nicht (ich werde mal nach einer deutschen 7Zip-Hilfe suchen).

    Ich bin sicher nicht der einzige den der sinnlose Gebrauch von Anführungszeichen in den Befehlen Run

    oder ShellExecute in den Wahnsinn treiben, bis es endlich richtig funktioniert.

    Sorry Tuxedo , aber das kann man so nicht sagen !

    Die Übergabeparameter werden von dem aufzurufenen Programm festgelegt, nicht von der Run-Funktion in AutoIt ;).

    Gruß Musashi

  • Hallo,

    Musashi super vielen Dank hat Einwandfrei funktioniert :) genau das was ich brauche.

    Ist auch recht einfach gehalten und hab´s verstanden ;)

    BugFix : ich werde die Funktion morgen mal in Ruhe testen, da ich heute Abend noch was vor habe ;) werde berichten.

    Gruß Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Hallo Kanashius !

    Als ich vor ein paar Tagen 7zip genutzt hab viel mir auf, dass die 7za.exe nicht mit rar-Dateien funktioniert. Um diese zu entpacken muss die 7z.exe genutzt werden.

    Das ist korrekt !

    7za.exe (a = alone) ist die standalone Variante von 7-Zip und unterstützt die Formate 7z, lzma, cab, zip, gzip, bzip2, Z and tar. Dafür benötigt 7za.exe aber auch keine externen Module.

    7z.exe benötigt zusätzlich die 7z.dll, und hat eine offene Architektur gegenüber neueren Formaten (wobei sich 7za.exe natürlich auch weiterentwickelt).

    Im Ergebnis geht es also nicht so sehr um die Frage : besser oder schlechter, sondern was man braucht.

    Sofern man das Format selbst festlegen kann, ist man mit dem 'Leichtgewicht' 7za.exe, meiner Meinung nach, besser bedient. Der Aufruf über Run/RunWait mit @SW_HIDE funktioniert bei beiden Varianten.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."