Alle Unterordner eines Verzeichnisses packen

Manchmal muss man schnell und einfach Platz sparen. Oder man muss alle Unterordner eines Verzeichnisses sichern/archivieren.

Unter Windows kann man das gut mit der frei Software 7-zip erledigen.

Im folgenden Script werden alle Unterordner über eine for-Schleife ermittelt. In dieser wird dann der Pack-Befehl ausgeführt und zusätzlich der Löschbefehl für den entsprechenden Ordner. Die Verknüpfung mit „&&“ ist erforderlich, da die Windows-for-Schleife nur eine Zeile verarbeien kann. 🙁

@echo off
REM Ziel des Backup-Archives
SET ArbeitsOrdner=C:OrdnerEnthaltendesVerzeichnis
REM Block fuer Packer-Konfiguration
set ZIPExe=C:Programme7-Zip7z.exe
set ZipFileExt=7z
set ZipFilePWD=
REM -r = rekursiv, -mhe = Header-Verschlüsselung, -ms=off = kein Solid-Modus, -mx9 = Kompressionsstufe 9, -p = Passwort
set globalParams=-r -mhe -mx9 -ms=off

REM Für alle Ordner im Arbeitsordner, Pack-Befehl aufrufen && Alte Dateien löschen
for /D %%i in (%ArbeitsOrdner%*) do (
  "%ZIPExe%" a -t%ZipFileExt% "%%i.%ZipFileExt%" %globalParams% "%%i" && rmdir /S /Q %%i
)