Extrahieren Sie die Batch-Dateien aus jedem Archiv mit 7-zip

4696
Rayearth

Ich möchte diesen Code in einem Stapel verwenden. Der erste Schritt besteht darin, den Quellordner einzugeben, dessen Baum folgendermaßen aussehen würde:

enter image description here

Was ich erreichen möchte, ist, jede Art von Archiv im Quellordner in denselben Ordner zu extrahieren, in dem sich das Archiv befindet, z. "Archiv.Zip" direkt in "Ordner1".

Geben Sie diesen Code ein, aber Sie haben keine Ahnung, wie Sie die Zielvariable festlegen.

SET /P "source="  FOR %%F IN ("%source%\*.zip") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.zip" FOR %%F IN ("%source%\*.7z") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.7z" FOR %%F IN ("%source%\*.rar") DO "C:\Program Files\7-Zip\7z.exe" x "%source%\%%~nF.rar" 
3
https://sevenzip.osdn.jp/chm/cmdline/commands/extract.htm iSR5 vor 7 Jahren 0

1 Antwort auf die Frage

2
Pimp Juice IT

Extrahieren Sie rekursiv aus Archivdateien mit 7Zip in denselben Ordner, in dem sich die Archivdatei befindet

Sie können den -oSchalter mit 7Zip verwenden, der den vollständigen Pfad des Ausgabeverzeichnisses für den Befehl extract angibt, um den Inhalt der entsprechenden Archivdateien zu extrahieren.

Sie können eine FOR / F- Schleife mit einem rekursiven DIR- Befehl verwenden, um die vollständigen Archivpfade zu durchlaufen und diese entsprechend an 7Zip zu übergeben, indem Sie Ersetzungen verwenden, um die Funktion so zu nutzen, wie Sie es benötigen.

Batch-Skript

@ECHO ON  SET source=C:\Users\User\Desktop\Test FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.zip"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\" FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.7z"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\" FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.rar"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"%%~pF\" EXIT 

Weitere Ressourcen

  • DIR
  • FOR / F

    Darüber hinaus wurde die Ersetzung von FOR-Variablenreferenzen verbessert. Sie können jetzt die folgende optionale Syntax verwenden:

    %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string 
Das funktioniert natürlich einwandfrei - vielen Dank für die Erklärung, wie man dieses Problem angehen kann. BTW. Haben Sie eine Ahnung, warum 7-Zip-Switches -y (Ja bei allen Abfragen annehmen) und -aoa (Überschreiben aller vorhandenen Dateien ohne Eingabeaufforderung) nicht funktionieren und ich jedes Mal gefragt werde, was zu tun ist, wenn ein Dateiname vorhanden ist Konflikt? Rayearth vor 7 Jahren 0