Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Verschiedene Archive mit Winrar.exe entpacken





Frage

Hi, kennt einer eine Möglichkeit alle RAR Archive eines vorgegebenen Ordners via VBScript oder Command line Parameter der winrar.exe zu entpacken? Also z.B. im Ordner C:\Ordner1 liegen folgende Archive: Text1.part01.rar <-- Text1 gepackt und in mehrere volumes gesplittet usw. Text1.part02.rar Text1.part03.rar Text1.part04.rar Text1.part05.rar Document1.part01.rar Document1.part02.rar Document1.part03.rar ABild.part01.rar ABild.part02.rar usw. Mit der Command line: {winrar e *.rar *.*} startete zwar winrar und fing an alle dateien zu scannen, entpackte aber dann nur das erste Archiv also Text1.part01.rar bis Text1.part05.rar und fing dann immer wieder von vorne an die selbe datei wieder und wieder zu überschreiben. Ist das ein Bug? Oder mache ich was flasch? Meine Winrar Version ist v3.40. Bin für jeden Vorschlag offen. mfG DerOnkel

Antwort 1 von Dixi*

Hi, wenn die Archive gesplittet sind ist es richtiger die einzelnen Dateien vor dem Entpacken wieder zu vereinigen und dann erst zu entpacken. VBScriptmäßig kann ich dir leider nicht weiter helfen.

MfG

Antwort 2 von DerOnkel

Hi,
danker erstmal für die Antwort.
Wie soll man die Archive vor dem entpacken vereinen? Winrar entpackt doch die gesplittete Datei aus den Archiven automatisch also muss es ja so oder so vereinen. Davor geht das ja schlecht und selbst wenn würde das auch nix ändern das man es nicht mit cmd line parameter entpacken kann sobald mehrere verschiedene volumes da sind.

mfG DerOnkel

Antwort 3 von Archipel

Zitat:
kennt einer eine Möglichkeit alle RAR Archive eines vorgegebenen Ordners via VBScript oder Command line Parameter der winrar.exe zu entpacken?

Ich nicht. Aber ich stehe gerade vor der gleichen Aufgabe. Vielleicht kann ich Dir in ein paar Tagen helfen. Oder auch umgekehrt, je nach dem wer schneller ist. ;-)

Zitat:
Mit der Command line: {winrar e *.rar *.*} startete zwar winrar

Ist für die Commandlinesteuerung nicht die Datei "rar.exe" im Programmordner von Winrar zuständig? Lasse Dir mal die Hilfe ausgeben:
rar >hilfe.txt -?


Zitat:
Ist das ein Bug?
Oder mache ich was flasch?

Die Wiederholung könnte daran liegen, dass er das Entpacken für jedes Teilarchiv 01-05 startet. Probier mal statt "*.rar" "*.part01.rar" anzugeben.

Zitat:
wenn die Archive gesplittet sind ist es richtiger die einzelnen Dateien vor dem Entpacken wieder zu vereinigen und dann erst zu entpacken.

Das ist meines Wissens nicht richtig. Es hängt davon ab, wie die Teilarchive erzeugt wurden. Nur wenn das RAR-Archiv nach seiner Erzeugung von einem anderen Programm zerteilt wurde, trifft dies zu. Wenn WinRAR das Archiv bei der Erzeugung zerteilt hat (der Normalfall), kann es es auch wieder selbst zusammensetzen.

Wie gesagt, wenn Du eine Lösung findest, lasse es mich bitte wissen. Danke!

Antwort 4 von DerOnkel

Hi, Archipel,
die winrar.exe hatt noch ein paar mehr funktionen als die rar.exe z.B. sieht man mit der winrar.exe die processbar während des entpackens.
Das mit den wiederholungen habe ich mir nun näher angeschaut. Er wiederholt wie du sagtest für jedes Teilarchiv den vorgang, fängt aber wenn er damit fertig ist trozdem mit den selben wieder von forne an. Das ist wie eine schleife die erst beendet wird wen er soviele durchgänge mit dem selben Archiv gemacht hatt wie andere Archive vorhanden bzw. gezählt wurden sind.
Also:

Text1.part01.rar <- von hier beginnend
Text1.part02.rar
Text1.part03.rar
Text1.part04.rar
Text1.part05.rar <- bis hier wird abgearbeitet
Document1.part01.rar <- ab hier wird nix entpackt
Document1.part02.rar <- aber die Archive wurden auch gezählt
Document1.part03.rar <- und werden dafür oben sooft nochmal entpackt
ABild.part01.rar
ABild.part02.rar <- bis hier angekommen wurde.

Ich hoffe ich konnte es verständlich erklären.
Wie Du schon gesagt hast, wer zuerst eine lödung findet sagt hier bescheid.

mfG
DerOnkel

Antwort 5 von achim_13086

Warum Winrar nicht einfach öffnen?

In Winrar auf das Verzeicnis mit den Rar-Dateien wechseln.

Jeweils die zusammengehörenden Dateien markieren und auf Entpacken klicken. Jetzt nur noch den Ort angeben, wohin entpackt werden soll.

Bei mir macht Winrar eigentlich das, was von dem Programm erwartet wird. Sollte es sich jeweils um Teilarchive handeln, fügt Winrar sie selbständig zusammen.

Warum also so kompliziert über eine Commandozeile? oder soll das so funktioniern. "Warum einfach, wenn es auch kompliziert geht?"

Ich hoffe, es hilt.

Gruß
Joachim

Antwort 6 von DerOnkel

Hi, achim_13086,
das ist richtig so könnte ich es machen und so geht es auch. Aber ich muss es über cmd line lösen da ich den befehl dann direckt oder über batch mit einem anderen Programm aufrufen muss!

mfG
DerOnkel

Antwort 7 von achim_13086

Guten Tag Onkel,

ich habe mir einmal die Winrar-Hilfe vorgenommen..

Hier habe ich folgendes Beispiel gefunden:

WinRAR x Fonts *.ttf
entpackt alle *.ttf Dateien aus dem Archiv Fonts in das aktuelle Verzeichnis; jedoch der Befehl

WinRAR x Fonts *.ttf NewFonts\
entpackt alle *.ttf Dateien aus dem Archiv Fonts in das Verzeichnis NewFonts

Bitte vergessen Sie den abschließenden Backslash, wie im obigen Beispiel, nicht.

Hinweis: Nicht die Option "e2 ist maßgend, sondern "x2 .

Die Rar-Dateien könnten Verzeichnisse enthalten, die zwangsläufig mit zu entpacken sind. Bei der Option "e" wird das zwangsläufig auf Schwierigekitne stoßen.

Soweit ich gelesen habe, war von VBS-Script die Rede. Innerhalb eines VBS-Scriptes reicht es nicht aus, die Befehlszeile für Winrar einzufügen.

Unter Office-VB muß die Befehlszeile mit Application.Run eingeleitet werden.

Ich hoffe, es bringt Euch ein Stück weiter.

Gruß
Joachim

Antwort 8 von DerOnkel

Hi,
also das mit "WinRAR x Fonts *.ttf NewFonts\" wusste ich ja auch schon, aber das funktioniert genauso wie mit e nur das es halt die dateien in einen anderen ordner als den source ordner entpackt. ich möchte ausserdem alle dateien entpacken und doppelte müssen halt überschrieben werden was ja auch kein problem ist mit entprechendem schalter. Der Befehl müsste "WinRAR x *.rar *.* New\ " oder "WinRAR e *.rar *.*" heissen aber beides geht nur mit den ersten Teilarchiven wie oben beschrieben.

Mit VBS ist es doch möglich den Ordnerinhalt auszulesen und dann alle *.rar Archive einzeln mit dem o.g. Befehl zu starten. Das ist zwar unschön aber so würde es wehnigstens gehen.

mfG
DerOnkel

Antwort 9 von Archipel

Hier ein VBSkript:

rp="c:\programme\winrar\rar.exe"
ao="c:\archivordner"
zo="c:\archivordner"
es=".part01.rar"
set fso=createobject("scripting.filesystemobject")
set shell=createobject("wscript.shell")
for each f in fso.getfolder(ao).files
	if instr(lcase(f.name),lcase(es)) then
		shell.run rp&" e "&f&space(1)&zo,0,true
	end if
next
msgbox "Alle Archive entpackt!"

Diese Variablen müssen angepasst werden:
"rp" steht für den Pfad von der Rar-EXE
"ao" für den Ordner in dem die RAR-Archive drin sind
"zo" für den Ordner in den die entpackten Dateien reinkommen (er muss existieren!)
"es" für den "Erkennungsstring". Jede Datei die ihn im Namen enthält wird entpackt.

Das Skript ist sehr einfach. Aber es könnte für Deine Zwecke ausreichen.
Sollte ein Archiv selbst Ordner enthalten, könnte es Schwierigkeiten geben (siehe Joachim)

Antwort 10 von DerOnkel

Thx @ Archipel,
das ist schonmal eine Notlösung. Trozdem suche ich weiterhin nach einer besseren Möglichkeit da der VBS Host ja auch deaktiviert sein kann auf manchen systemen. Sollte ich letztendlich nicht fündig werden muss ich mich wohl mit der unrar.dll zufrieden geben.
Vieleicht ist das ja schon eine alternative für dich:
http://www.rarlab.com/rar_add.htm
Da gibts noch ein paar andere Tools und Sources.

mfG
DerOnkel

Antwort 11 von DerOnkel

Juhu,
mit dieser Version hier:
http://www.rarlab.com/rar/unrarw32.exe
und der Befehlszeile:
unrar e -y -v -o+ *.rar *.*
hatt es genauso geklappt wie ich es wollte.
Hoffe ich konnte helfen.

mfG
DerOnkel

Antwort 12 von Archipel

Danke für den Tipp!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: