Wie extrahiere ich mehrere Archive in Unterverzeichnissen in einem Ordner und gebe die Ergebnisse in die Ordner zurück, in denen sich die Archive befinden.
Wie extrahiere ich mehrere Archive in Unterverzeichnissen in einem Ordner und gebe die Ergebnisse in die Ordner zurück, in denen sich die Archive befinden.
Antworten:
Installieren Sie zunächst 7-zip .
Erstellen Sie eine bat
Datei im Stammverzeichnis des Verzeichnisses, die viele Unterverzeichnisse mit darin enthaltenen Archiven enthält. Dann fügen Sie folgendes ein:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd
)
Starten Sie die Fledermaus, und alle RARs / Zips werden in den Ordner extrahiert, in dem sie enthalten sind.
Wie funktioniert das?
FOR / D / r %% F in ("*") DO (
For-Schleife, um alle Ordner im aktuellen Verzeichnis zu durchlaufen und den Pfad in eine Variable einzufügen
%%F
.
pushd% CD%
Legen Sie das aktuelle Verzeichnis, in dem wir uns befinden, in den Speicher.
cd %% F
Legen Sie den Ordner aus der Variablen
%%F
als aktuelles Verzeichnis fest.
FOR %%X in (*.rar *.zip) DO (
Führen Sie für alle
rar
undzip
Dateien im aktuellen Ordner folgende Schritte aus:
"C:\Program Files\7-zip\7z.exe" x "%%X"
Führen Sie 7-zip für die Dateien aus. Anführungszeichen sind erforderlich,
%%X
da einige Dateinamen Leerzeichen enthalten.
popd
Kehren Sie zum vorherigen Verzeichnis zurück, das wir zuvor im Speicher gespeichert haben.
Hoffe, das ist nützlich für jemanden.
Ich hatte Probleme beim Ausführen des Skripts unter Windows Vista. Als ich den Code lief, passierte nichts. Ich musste Administrator sein, um das Skript ausführen zu können. Wenn ich mit der rechten Maustaste auf die .bat-Datei geklickt habe und "als Administrator ausführen", hat es nicht funktioniert, weil es aus irgendeinem Grund im Ordner "system32" gestartet wurde (wenn ich mich richtig erinnere). Um dies zu lösen, verwenden Sie einfach die Windows-Umgebungsvariable (hier erklärt: Windows-Umgebungsvariablen )% ~ dp0, um zu dem Verzeichnis zurückzukehren, von dem aus das Skript ausgeführt wurde.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
Stellen Sie sicher, dass sich keine * .rar- oder * .zip-Dateien auf derselben Ebene wie das Skript befinden. Sie sollten eine Ebene tiefer sein.
Ich hoffe dieser Kommentar hat jemandem geholfen.
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
Startet eine rekursive Suche im aktuellen Verzeichnis, findet alle Dateien, die mit .zip enden, und leitet diese in eine Schleife weiter. Für jede gefundene Datei wird ein Dekomprimierungsbefehl für die Datei ausgeführt, wobei die Ausgabe in das Dateiverzeichnis verschoben wird.
Die obigen Antworten funktionieren jedoch, wenn Sie ausgeführt werden Windows 64-bit
und 7-Zip 32-bit
der richtige Pfad C:\Program Files (x86)\7-Zip
für 7-Zip ist. Unten ist das Skript, das für mich funktioniert hat.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files (x86)\7-zip\7z.exe" x %%X
)
popd
)