klausweinert
Goto Top

Automatisch entpacken mit WinRar

und nach erfolreichem entpacken die Archiv Dateien löschen.

Guten Morgen Forum.

Zu der Fragestellung bin ich über Google hier gelandet und habe auch Teillösungen gefunden. Folgendes entpackt genauso wie ich mit das vorstelle:
for /r %i in (*.part1.rar) do @c:\programme\Winrar\rar x "%i" "%~dpi"  
Ich gehe dann mit CMD zb. nach C:\Download und kopiere alles an den Prompt, - so weit und so gut, das klappt alles prima.

Jetzt 2 Dinge.
1. Wie muß die Batch Datei aussehen die for /r %i in (*.part1.rar) do @C:\programme\Winrar\rar x "%i" "%~dpi" macht wenn sie dort liegt ab wo for /r %i in (*.part1.rar) do @C:\programme\Winrar\rar x "%i" "%~dpi" starten soll ?

2. könnte man for /r %i in (*.part1.rar) do @C:\programme\Winrar\rar x "%i" "%~dpi" noch so erweitern das nach einem erfogreichen entpacken die Archiv Dateien gelöscht werden ? wenn ja wie.

Für Unterstützung bedanke ich mich,
Mit freundlichen Grüßen
Klaus Weinert

Nachsatz:
Die Formatierung klappt nicht. Aus EINEM \ werden Zwei und vor " wird ebenfalls ein \ gesetzt. Auch wenn ich `` oder code benutze.

Nachsatz 2:
Die Probleme der Formatierung betreffen offenbar nur die Vorschau.

Content-Key: 46534

Url: https://administrator.de/contentid/46534

Printed on: April 20, 2024 at 01:04 o'clock

Member: Biber
Biber Dec 12, 2006 at 09:08:45 (UTC)
Goto Top
Moin KlausWeinert,

1. Wie muß die Batch Datei aussehen...

Die muss erstens überall dort zwei Prozentzeichen stehen haben, wo die CMD-Zeile ein Prozentzeichen hat.
Zweitens kann/sollte die FOR /R-Anweisung noch einen zusätzlichen Parameter mitbekommen, nämlich das Startverzeichnis der rekursiven Aktionen.

Somit wäre eine Verbesserung:
for /r d:\meineRars %%i in (*.part1.rar) do @c:\programme\Winrar\rar x "%%i" "%%~dpi"  
-oder-
for /r %1 %%i in (*.part1.rar) do @c:\programme\Winrar\rar x "%%i" "%%~dpi"  
REM Parameter <Startverzeichnis> der Batchdatei mitgeben.

2. könnte man.. noch so erweitern das nach einem erfogreichen entpacken die Archiv Dateien gelöscht werden ?

Wenn man/frau unbedingt wollte, dann ja.
Würde ich allerdings nie tun. So sehr vertraue nicht mal ich einem Batchablauf.

for /r d:\meineRars %%i in (*.part1.rar) do (@c:\programme\Winrar\rar x "%%i" "%%~dpi" >nul) && del /q %%i  

HTH
Biber
Member: KlausWeinert
KlausWeinert Dec 12, 2006 at 10:07:34 (UTC)
Goto Top
Bedanke mich erstmal für die sehr schnelle Antwort.

Der von Ihnen vorgeschlagene Batch Aufruf klappt, allerdings MUSS jetzt das Startverzeichnis angegeben werden, ansonsten fängt der Aufruf im Wurzelverzeichnis (Cface-smile an.
- ist aber kein Problem, gibt man eben das Verzeichnis an und die Batch kann liegen wo sie will.

Der Aufruf mit der lösch Anweisung klappt, löscht aber nur die part1.rar. In diesem Zusammenhang ist mir noch ein Gedanke gekommen. Es gibt Archive die fangen mir *.rar an und setzen sich dann mit *.r00, *.r01 usw. fort. Ebenfalls gibt es Archive die heißen *.part01.rar, *.part02.rar usw.
Bei Folgenden Aufruf werden part01.rar und part1.rar Archive immer wieder entpackt:
for /r C:\Temp %%i in (*.rar) do @C:\programme\Winrar\rar x "%%i" "%%~dpi"
der abgeänderte Aufruf
for /r C:\Temp %%i in (*.r00 *.part01.rar *.part1.rar ) do @C:\programme\Winrar\rar x "%%i" "%%~dpi"
funktioniert, wenngleich die *.r00 zunächst falsch aufgerufen wird.

die lösch Anweisung müßte zum funktionieren also wissen das sie alle *.r?? löschen soll.

Wenn Sie mir das jetzt noch für die Batch formulieren könnten wäre es ganz Klasse.

Mit freundlichen Grüßen
Klaus Weinert
Member: Biber
Biber Dec 12, 2006 at 12:09:03 (UTC)
Goto Top
Moin KlausWeinert,

auch wenn Wiederholungen sicherlich nervig sind: ich würde das Auspacken und das automatisierte Löschen der *.rar-Archive nicht in einem Abwasch machen.

Für mich ist immer noch ein Schritt dazwischen - das tatsächlich (meinetwegen bio-optische ) Überprüfen "Ist denn in den entpackten Daten das, was ich erwartet habe?".

Aber sei's drum... wenn Du denn alles löschen willst, dann würde ich alle "sauber" und vollständig entpackten *.rar-Dateien in eine Zwischendatei schreiben und diese Datei danach Zeile für Zeile abarbeiten.

Ungetestete Skizze, ausgehend vom letzten geposteten Stand:
for /r C:\Temp %%i in (*.r00 *.part01.rar *.part1.rar ) do @c:\programme\Winrar\rar x "%%i" "%%~dpi" && echo "%%i">>Rars2Delete.txt  
for /f "delims=" %%i in (Rars2Delete.txt) do del /q %%i   
del Rars2Delete.txt

Obwohl eigentlich auch die oben gepostete Zeile mit "...&& del /q "%%i".." das Gleiche hätte tun sollen.

Gruß
Biber
Member: KlausWeinert
KlausWeinert Dec 12, 2006 at 13:44:24 (UTC)
Goto Top
Danke für die Antwort und auch für die Hinweise zum Umgang mit so einer Batch. Natürlich muß es im Ergebnis so sein das nur Archive gelöscht werden die anständig entpackt sind. Bei meinem Test ohne lösch Funktion war es so das die Batch weitergelaufen ist auch wenn ich mal testweise ein Archiv fehlen lassen habe, - es wurde dann ohne Fehlermeldung einfach nichts entpackt und zum nächsten Verzeichnis gewechselt.

Das Macro bzw. Rar hat also abgebrochen und den nächsten sprung gemacht, so muß es dann mit dem löschen auch sein.

Zur aktuellen Vorlage. Es wird entpackt und nur die Datei gelöscht die aufgezählt ist. zb.: *.r00, *.part01.rar oder *.part1.rar
In der Rars2Delete.txt steht auch nur immer eine von den aufgezählten.
Ich denke es geht nur mit *.r?? und das darf nur passieren wenn alles geklappt hat.

Bei Winrar gibt es einen Schalter -d und der soll für delete stehen, allerdings nur im Zusammenhang mit a (steht für Archiv erstellen), wir sind bei e, also entpacken. Ich habe es auch noch nicht hinbekommen den Schalter -d im Zusammenhang mit e zu benutzen, soll nicht heißen das es nicht doch irgendwie geht, sondern nur das ich es nicht kann.