Dateien entzippen

Hallo
bräuchte ein kleines Progrämmchen, welches mir alle!!! Dateien eines Verzeichnisses (zB C:\Test das würde mir als Hilfe reichen) nach C:\Test\Entpackt entzippt. Danach (wenn also mit allen Dateien fertig)sollen die Dateien und das Verzeichniss Entpackt wieder gelöscht werden.

Ich möchte dann meinen Code vorher einbauen, um auf die entpackten Dateien zuzugreifen.

Es gibt mit VBasic doch auch ein PKZIP, so das ich also von installierten Packern unabhängig wäre.

Kriegt jmd von euch sowas schnell hin oder kann mir anderweitig helfen.
Bin wie immer für Hilfe dankbar.

Mfg Werner

Hallo Werner,

so geht’s:
http://www.activevb.de/tipps/vb6tipps/tipp0269.html

Die Schleife mußt Du noch selbst darum herum bauen.

Gruß, Rainer

OK danke
Hallo
das Beispiel hatte ich auch schon mal gesehen, dachte jmd hätte sich vielleicht schon so etwas angepasst.

Mfg Werner

Hallo Werner,

dachte jmd hätte sich vielleicht schon so etwas angepasst.

um mehrere gepackte Dateien in Serie zu entpacken? Das halte ich für unwahrscheinlich, ich fürchte der Wunsch ist zu exotisch. Meist will man doch nur eine bestimmte Datei entpacken und dabei auch noch den Ort explizit angeben. Daß Du das brauchst, ist eher ungewöhnlich, deshalb wirst Du das fertig kaum finden.

Schwer ist es aber auch nicht, Du kannst das Beispiel ja in eine funktion umwandeln, dann brauchst Du nur noch das FSO-Beispiel nehmen um Verzeichnisse rekursiv zu lesen und von da aus das Modul verwenden. FSO ist zwar relativ langsam, aber bis c.a. 100 Dateien schnell genug.

Ich habe es gerade nur als VBS griffbereit, das ist mit wenig Aufwand aber schnell an VB angepasst.

Option Explicit
Dim MyFSO
Dim Text
Set MyFSO = CreateObject("Scripting.FileSystemObject")
ScanDir("C:\TEMP")
MSGBOX Text
Sub ScanDir(ScanPfad)
 Dim PathObject, FileObject, FileNow, SubFolders, SubFoldersNow

 Set PathObject=MyFSO.getFolder(ScanPfad)
 Set FileObject=PathObject.Files
 For Each FileNow In FileObject
 Text = Text + FileNow + VbCrLf
 '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 
 '\* hier müsste die Funktion aufgerufen werden \*
 '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 Next

 Set SubFolders=PathObject.SubFolders
 For Each SubFoldersNow in SubFolders
 ScanDir(SubFoldersNow.ParentFolder+"\"+ SubFoldersNow.Name)
 Next
End Sub

Gruß, Rainer

nochmal
Hi,
FSO verstehe ich nicht, keine Ahnung was du meinst.
Ich probiers mal über den Dateinamen:

Hier eingebaut in ein Mini-Programm:
Private Sub Command1_Click()
Dim Datei As String
Datei = Dir(„c:\temp*.*“)
While Not Datei = „“
Datei = Dir
MsgBox Datei
Wend

Dann kann ich die Endung scannen und lasse nur Zips entpacken.

Ein Problem habe ich allerdings noch, die Wartezeit des Entzippens in Form eines Balken darstellen, hast du dazu eine Idee???
Du weisst ja es muß alles schön ordentlich aussehen.

Mfg Werner

Hallo Werner,

FSO verstehe ich nicht, keine Ahnung was du meinst.

den Beispielcode. Vergiss es einfach, weil …

Ich probiers mal über den Dateinamen:

Hier eingebaut in ein Mini-Programm:
Private Sub Command1_Click()
Dim Datei As String
Datei = Dir(„c:\temp*.*“)
While Not Datei = „“
Datei = Dir
MsgBox Datei
Wend

so geht es genau so gut. In VB führen eben oft mehrere Wege zum Ziel. :smile:

Dann kann ich die Endung scannen und lasse nur Zips entpacken.

Ein Problem habe ich allerdings noch, die Wartezeit des
Entzippens in Form eines Balken darstellen, hast du dazu eine
Idee???
Du weisst ja es muß alles schön ordentlich aussehen.

Ja, weiß ich. Die Zeit hängt vermutlich mit von der Dateigröße ab, dann wäre es sinnvoll, erst mal die Größen der Dateien zu summieren, daraus einen darstellbaren wert zu errechnen und die bereits entpackte Menge darzustellen. Die Größe bekommst Du ja mit FileLen(). Wenn die Dateien alle etwa gleich groß sind, genügt vermutlich die Anzahl an Dateien anzuzeigen.

Wie viel von einer Datei bereits entpackt ist, wirst Du nicht darstellen können.

Gruß, Rainer

FSO

FSO verstehe ich nicht, keine Ahnung was du meinst.

File System Object

Kommt eigentlich aus VBS (VB Script), glaube ich, wird aber in VBA und VB ebenfalls verwendet, obwohl es da für einige Funtionen des FSOs Alternativen gibt. In VBS hingegen gibt´s die nicht, so dass man da zwangsläufig mit dem FSO arbeiten muss - es sei denn, man verwendet API-Aufrufe, das geht auch in VBS, wenn ich mich recht entsinne.

Frag jetzt nicht, was API heißt … :wink: Weiß ich gar nicht. Ich weiß nur WAS das ist und wie ich es benutze :wink: Im Prinzip sind es Aufrufe von Funktionen in System-DLLs.

Kristian