Automatisches Extrahieren und Umbenennen extrahierter Dateien entsprechend dem Archivnamen

Automatisches Extrahieren und Umbenennen extrahierter Dateien entsprechend dem Archivnamen

Ich habe mehrere Zip-Dateien in einem Ordner. Jede Zip-Datei enthält eine Datei mit dem Namen exp_1.txt. Ich möchte jede Zip-Datei entpacken und die extrahierte Datei aus jeder Zip-Datei in den Namen der Zip-Datei umbenennen.

Die Namen der Zip-Dateien folgen keinem Muster oder Datumsaufbau, sondern sind alle unterschiedlich. Ich habe herausgefunden, wie ich die exp_1.txtDatei in dasselbe Verzeichnis wie die Zip-Datei extrahieren kann, kann aber nicht herausfinden, wie ich sie umbenennen kann, exp_1.txtdamit sie mit dem Namen der Zip-Datei übereinstimmt, aus der sie extrahiert wurde.

Noch einmal in weniger Worten: Aus TuesdayReport.zipmöchte ich die einzige Datei extrahieren exp_1.txtund sie TuesdayReport.txtim selben Verzeichnis wie in umbenennen TuesdayReport.zip.

Derzeit verwende ich 7z xzum Extrahieren der Datei in dasselbe Verzeichnis, in dem sich die ZIP-Datei befindet. Ich würde es vorziehen, dies aus einer Batchdatei ausführen zu können.

Antwort1

warum nicht die 7zip-Befehlszeilenversion verwenden, die Sie herunterladen können vonHier?

In dieser ZIP-Datei finden Sie eine Hilfedatei im CHm-Format mit allen Schaltern und Befehlen, die Ihnen bei Ihrem Batch-Prozess helfen können.

Antwort2

forfiles /M *.zip /C "cmd /c C:\PROGRA~1\7-Zip\7z.exe e @file & ren exp_1.txt @fname.txt"

Antwort3

exp_1.txtDadurch wird aus jeder ZIP-Datei im aktuellen Verzeichnis die Datei mit dem gleichen Namen wie die ZIP-Datei extrahiert, jedoch mit der folgenden Erweiterung txtanstelle von :zip

for %a in (*.zip) do @(7z l "%~a" -ir!exp_1.txt |findstr exp_1.txt) && 7z e "%~a" -ir!exp_1.txt -so >"%~na.txt"

Dies kann direkt von der Kommandozeile aus ausgeführt werden. Wenn Sie es aus einem Batch ausführen möchten, müssen Sie%

Was es macht:

  • forSchleife zählt jede Zip-Datei auf
  • Der erste 7zAufruf stellt zusammen mit findstrsicher, dass das Extrahieren nur ausgeführt wird/eine Datei nur erstellt wird, wenn das Archiv bestimmte Dateien enthält.
  • Der zweite 7zAufruf extrahiert die Datei tatsächlich in die Standardausgabe ( -soSchalter) und leitet stdout zu einer Datei mit dem gleichen Namen wie das Archiv (ohne Erweiterung) um. Der %~nModifikator weist cmd an, nur den Basisnamen (ohne Erweiterung) zu übernehmen.

Bitte beachten Sie, dass es zu unerwarteten Ergebnissen kommen kann, wenn sich im Archiv mehrere Dateien mit demselben Namen (in unterschiedlichen Verzeichnissen) befinden.

Wenn Sie es im Batch ausführen, würde ich auch vorschlagen, den Dateinamen als Variable festzulegen (vor der Schleife), um Wiederholungsfehler zu vermeiden (Sie müssen es im obigen Befehl dreimal eingeben).

verwandte Informationen