7z - Dateien im Unterverzeichnis komprimieren und nach dem übergeordneten Ordner benennen

7z - Dateien im Unterverzeichnis komprimieren und nach dem übergeordneten Ordner benennen

Ich versuche, eine Ordnerstruktur wie folgt zu komprimieren:

Root
 |_ Folder
      |_Sub Folder 1
          |_Files
      |_Sub Folder 2
          |_Files
      |_ *more Sub Folders*

Ich muss für jeden Unterordner eine ZIP-Datei erstellen, die die Dateien im Unterordner enthält und nach dem Unterordner benannt sein muss. Wenn ich also den Befehl innerhalb von „Ordner“ ausführe, erhalte ich eine nach jedem Unterordner benannte ZIP-Datei mit nur dem Inhalt des Unterordners (nicht dem einfach komprimierten Unterordner).

Ich habe verschiedene Befehle unter Windows mit 7-Zip ausprobiert, aber es klappt einfach nicht.

for /d %i in (*) do 7z a -oC:\Temp... %i.zip

Dadurch wird einfach der gesamte Ordnerinhalt komprimiert und für jeden Unterordnernamen ein Archiv erstellt.

Ich bin für jede Hilfe dankbar, die Sie mir geben können!

Antwort1

Am einfachsten ist es, TotalCommander (von ghislers Site) zu installieren und die gewünschten Unterverzeichnisse auszuwählen (Sie können * auf der Zifferntastatur verwenden, um alle umzuschalten). Tastenkombination Alt-F5 für Kompressoren. Aktivieren Sie „Separate Archive erstellen, eines pro ausgewählter Datei/Verzeichnis“, wählen Sie den gewünschten Kompressor aus und klicken Sie auf „OK“.

In einem Batch können Sie Folgendes verwenden:

@echo off
for /d %%i in (*) do (
    echo Compressing %%i
  7z a "C:\TEMP\%%i.7z" -r "%%i\*.*"
)

Oder in einer CMD-Zeile:

for /d %i in (*) do  7z a "C:\TEMP\%i.7z" -r "%i\*.*"

Antwort2

Sie können auch Powershell verwenden:

Get-ChildItem -Path "C:\Root\Folder" -Force -Directory -ErrorAction Continue | foreach {Start-Process "C:\Program Files\7-Zip\7z.exe" -ArgumentList "a C:\TEMP\$_.7z -r $($_.FullName)\*.*"}

verwandte Informationen