AutoIt Zip Archive extrahieren und wieder zusammenfügen

07/30/2010 19:23 WieMeinen#1
Hi, ich habe ein Problem.

Ich möchte mit AutoIT ein Zip-Archiv automatisch erstellen.

Inzwischen habe ich mich mit der [Only registered and activated users can see links. Click Here To Register...] vertraut gemacht.Ich weiß auch schon wie ich eine Datei in ein Archiv hinzufüge. Doch nur sehr umständlich:

PHP Code:
_Zip_UnzipALL(@ScriptDir "\Test.zip",@ScriptDir "\Test.zipUNZIPPED")
FileCopy(******,@ScriptDir "\Test.zipUNZIPPED")
_Zip_Create(@ScriptDir "\Test.zip")
_Zip_AddFolder(@ScriptDir "\Test.zip",@ScriptDir "\Test.zipUNZIPPED\") 
So ähnlich halt. Doch es gibt auch die Funktion _Zip_AddFile() und _Zip_AddFolder() um files direkt hinzuzufügen. Nur leider kann ich die Files und die Ordner nur direkt in den Mainfolder machen und nicht in die Subfolder.
Ich hab den Auszug aus der Zip.au3 (UDF) mal reingeschrieben.
Ich sehe keine Möglichkeit die Files in einen Subfolder zu kopieren durch diese Funktion.

PHP Code:
; Function Name:    _Zip_AddFile()
Description:      Add a file to a ZIP Archieve.
Parameter(s):     $hZipFile Complete path to zip file that will be created (or handle if existant)
;                    
$hFile2Add Complete path to the file that will be added
;                    $flag 1
;                    - 0 ProgressBox
;                    - 1 no progress box
Requirement(s):   none.
; Return 
Value(s):  On Success 0
;                   On Failure sets @error 1~3
;                    @error 1 no Zip file
;                    @error 2 no dll
;                    @error 3 dll isnt registered
;                   On Failure Returns False
Author(s):        torels_
Notes:            The return values will be given once the compressing process is ultimated... it takes 
some time with big files 
Hier ein paar Vorschläge die leider nicht funktionieren.
Quote:
ICh hab mic auch noch nicht viel mit der Zip.au3 beschäftigt. Jedoch sollte "_Zip_AddFolderContents()" doch die Lösung sein oder nicht?
_Zip_AddFolderContents() added nur den Inhalt des Ordners der angegeben wurde und das auch nur in den Mainfolder des Archivs.
Quote:
Ansonsten kannst du auch die Dateien in den Ordner reinkopieren, der dann der SubFolder sein soll und kopierst direkt den Ordner mit den Dateien.
Mein Problem ist nur, das ich eine Datei habe, die schon Dateien enthält. Ich will mit AutoIt nur eine Datei in das bestehende Archiv hinzufügen. Nur muss diese Datei in einen Subfolder. Wenn ich jetzt die Datei außerhalb des Archivs in den Ordner mache und dann den ganzen Ordner adde, sagt er, das der Ordner bereits existiert. Und selbst wenn man den Ordner einfügt, sind ja die anderen Subfolder aus dem Ordner weg. Also suche ich eine Möglichket ohne das komplette Archiv zu entpacken, die Dateien reinzukopieren und dann den Ordner wieder zu komprimieren, eine Datei in einen Subfolder hinzuzufügen.

Ach ja, das funktioniert nicht:
PHP Code:
_Zip_AddFile(@ScriptDir "\Test.zip\Folder\Subfolder1\","@ScriptDir "\Test.txt"
Ich habe mir auch schonmal gedacht, wie xmanix schon sagte mit der rar.exe von WINRAR zu arbeiten, doch dazu hätte ich auch ne Frage:

Wie kann ich der rar.exe sagen was sie tun soll. Durch Call() oder wie?

Hier nochmal die ganze Zip.au3 zum nachlesen:
07/30/2010 22:34 xmanix#2
stichwort: winrar über kommandozeile

in jeder winrar installation liegt eine rar.exe und eine rar.txt bei, die im programmverzeichnis von winrar zu finden sind.

die rar.txt ist die dokumentation über die rar.exe, welche man aus autoit mit den entsprechenden parametern einfach starten kann
08/01/2010 18:59 PenGuin :O#3
Zip.au3 UDF.

Google -> dein Freund
08/03/2010 11:10 WieMeinen#4
In den ersten Post editiert. Schaut oben.
08/03/2010 11:37 bladerofdarknes#5
#requireadmin ;)
dann sollte es sicherlich gehen
08/03/2010 12:36 PenGuin :O#6
Liest du eigentlich was er schreibt?

@Topic:
ICh hab mic auch noch nicht viel mit der Zip.au3 beschäftigt. Jedoch sollte "_Zip_AddFolderContents()" doch die Lösung sein oder nicht?

Ansonsten kannst du auch die Dateien in den Ordner reinkopieren, der dann der SubFolder sein soll und kopierst direkt den Ordner mit den Dateien.
08/03/2010 23:08 WieMeinen#7
Ich den ersten Post editiert. Schaut oben.
08/05/2010 02:27 WieMeinen#8
Kann mir niemand helfen? Ich benötige wenn keiner sich auskennt auch nur den befehl um einem anderen Programm (in diesem Fall "rar.exe") einen automatischen Befehl zu geben. Call() oder sowas.