Batch-Skript oder -Programm zum Extrahieren von RARs und anschließendes Löschen der RARs

Ich lade manchmal Bibliotheken mit Dateien im folgenden Format herunter:

/library/sublib1/item1/item1.r01
/library/sublib1/item1/item1.r02
/library/sublib1/item1/item1.rar

/library/sublib1/item2/item2.r01
/library/sublib1/item2/item2.r02
/library/sublib1/item2/item2.rar

/library/sublib2/item1/item1.r01
/library/sublib2/item1/item1.r02
/library/sublib2/item1/item1.rar

/library/sublib2/item2/item2.r01
/library/sublib2/item2/item2.r02
/library/sublib2/item2/item2.rar

Um diese zu extrahieren, muss ich normalerweise in das Element gehen, das RAR extrahieren und dann alle RAR-Dateien in jedem Ordner löschen.

Gibt es ein Tool, das rekursiv durchgeht und dies für mich erledigt, wobei nur die extrahierten Dateien übrig bleiben?

Windows-Batch-Skript ist in Ordnung.

Antworten (5)

7-Zip

7-Zip ist ein kostenloser Dateiarchivierer. Es ist in der Lage, viele Formate zu extrahieren, einschließlich RAR. Es kann auch über die Befehlszeile ausgeführt werden, wodurch es in Batch-Skripten verwendet werden kann.

Es gibt viele Möglichkeiten, dies zu tun. Im Folgenden finden Sie einige Beispiele:

So extrahieren Sie eine Datei:

7z x item1.rar

So extrahieren Sie alle rarDateien in einem Verzeichnisbaum:

dir library\*.rar /s /b > rarlist.txt
for /f %f in (rarlist.txt) do 7z x %f

Um die Dateien nach dem Extrahieren zu löschen, fügen Sie die Zeile hinzu

for /f %f in (rarlist.txt) do del %f

Bevor Sie einen solchen Befehl ausführen, vergewissern Sie sich bitte zuerst, dass die Extraktion erfolgreich war und dass Sie die richtigen Dateien entfernen, indem Sie einen Testlauf mit echoanstelle von ausführen del.


Bearbeiten 2017-12-29:

Dank Caseys Input in den Kommentaren geht das auch mit PowerShell, ohne dass eine zusätzliche Datei benötigt wird

foreach ($file in (ls *.rar)) { 7z x "$file" -aoa }; rm *.rar
Die Syntax ist eigentlich7z x filename.rar
Darüber hinaus können Sie dies auch mit PowerShell tun, und dann wird keine Zwischendatei benötigt:foreach ($file in (ls *.rar)) { 7z x "$file" -aoa }; rm *.rar
@Casey Danke! Ich hatte PowerShell damals noch nicht gelernt. Ich habe die Antwort bearbeitet
Sie müssen jedoch auch diese r01-, r02-Dateien für mehrteilige RAR-Dateien entfernen. Und Sie müssen keine Dateiliste speichern, da die for-Schleife diese bereits durchlaufen kann
@phuclv Gute Punkte. Wenn Sie das schreiben könnten, ist es möglicherweise einfacher, Ihre eigene Antwort mit dem besseren Skript zu veröffentlichen, als meine Antwort zu bearbeiten

Ich würde vorschlagen, Python zu installieren , damit Sie die ausgezeichnete os.walk- Bibliotheksfunktion verwenden können, um durch die Verzeichnisse zu rekursieren und die patool- Bibliothek zu installieren, um das Entpacken durchzuführen.

Ich habe Total Commander auf meinen Rechnern installiert. Es hat die Option, bestimmte Dateien zu entpacken (mit der Option Jedes Archiv in ein separates Unterverzeichnis entpacken), wodurch Sie ausgewählte Archive auf einmal entpacken können.
Danach müssen Sie die Archive erneut auswählen, um sie zu löschen, es ist also nicht genau in einem Schritt.

Zusammen mit seinen Such- und Feed-to-Listbox - Befehlen können Sie Archive, die sich in verschiedenen Ordnern befinden, stapelweise extrahieren, was Sie möchten. In Ihrem Beispiel würden Sie in Ihrem Ordner
suchen .item?.rar/library/

Total Commander ist Shareware und kostet 44 US$ bzw. 38 €

Googeln scheint dies ein ziemlich häufiges Problem zu sein, und es gibt mehrere sofort einsatzbereite Lösungen dafür.

Auf dieser Seite finden Sie einige davon: https://www.raymond.cc/blog/5-free-tools-to-automatically-extract-multiple-rarzip-archives/

Ich habe festgestellt, dass Unpack Monitor für mich funktioniert.

Verknüpfung

Was Sie tun, ist, es so einzustellen, dass bestimmte Verzeichnisse (wie Ihre Download-Verzeichnisse) überwacht werden, und es wird automatisch nach RARs suchen und die Dateien/Medien extrahieren.

Das bedeutet, dass Sie beim Herunterladen nicht einmal wissen müssen, dass Sie rars herunterladen. Wenn Sie sich den Ordner ansehen, ist bereits alles entpackt und bereinigt. Sehr angenehm.

Da Sie mehrteilige rar-Dateien haben, müssen Sie diese rXX-Dateien zusätzlich zu den *.rar-Hauptdateien entfernen. Das folgende Skript extrahiert alle *.rar-Dateien und löscht alle Archivdateien, wenn die Dekomprimierung erfolgreich war

for %%f in (*.rar) do (
    7z x %%f
    if errorlevel 1 (
        echo Error extracting file %%f
    ) else (
        del %%~nf.r*
    )
)

Sie können 7z.exe auch durch rar.exe ersetzen. Sie verwenden dieselbe Syntax

Wenn Sie die WinRAR-GUI-Version verwenden, gibt es eine Option zum Löschen des Archivs nach der Extraktion. Klicken Sie einfach mit der rechten Maustaste auf ein beliebiges Archiv > Dateien extrahieren... > Erweitert und wählen Sie „Um Bestätigung bitten“ oder „Immer“. Sie können dies als Standardoption speichern, indem Sie zur Registerkarte Allgemein zurückkehren und auf Speichern klicken

gewinnen

Zitiert aus der Hilfedatei von WinRAR

Archiv löschen

  • Niemals
  • Löschen Sie kein entpacktes Archiv.
  • Fragen Sie nach Bestätigung
  • Bitten Sie den Benutzer um Bestätigung, bevor Sie ein entpacktes Archiv löschen.
  • Stets
  • Löschen Sie ein entpacktes Archiv ohne Rückfrage.

WinRAR löscht ein Archiv nur dann, wenn es fehlerfrei entpackt wurde und alle archivierten Dateien zum Entpacken ausgewählt wurden. Wenn Sie ein mehrvolumiges Archiv entpacken, werden alle seine Volumes gelöscht.

Beachten Sie, dass Sie den Standardzustand dieser Option mit der Schaltfläche "Einstellungen speichern" auf der Seite "Allgemein" des Extraktionsdialogs speichern können und sich auch auf die Befehlszeilen- und Kontextmenü-Extraktionsbefehle auswirken. Verwenden Sie den Modus „Um Bestätigung bitten“ und insbesondere den Modus „Immer“ mit Bedacht. Das Löschen eines entpackten Archivs kann bei unsachgemäßer Verwendung zu Datenverlust führen.

Leider gilt dies nur für winrar.exe und nicht für rar.exe, aber Sie können immer noch Dateien mit winrar.exe extrahieren, indem Sie die xOption wie oben verwenden