ZIP-Dateien automatisiert entpacken und in 7z packen

Geeky26

Commander
Registriert
Jan. 2015
Beiträge
2.048
Um Platz auf meiner Festplatte zu schaffen möchte ich gerne in einem Verzeichnis anfangen aufzuräumen, welches circa 300 ZIP-Dateien enthält.

Ich hatte vor Jahren mal ein Batch-Script, das die ZIP-Dateien in einem Verzeichnis alle entpackt und neu gepackt hat. Leider habe ich das nicht mehr.

- kann mir jemand unter die Arme greifen und ein solches Script zur Verfügung stellen?

Das Zwischenspeichern des Dateinamen, Komprimieren mit 7z und löschen der alten Daten bekomme ich denke ich gerade noch hin.
 
Zunächst ein Backup des Ordners anlegen!

Jeweils in eine .ps1, fürs entzippen und eine für 7zippen. Alles als Verzeichnis entzippen und auch Verzeichnisse wieder 7zippen.

Code:
$files = Get-ChildItem X:\ | ?{ $_.PSIsContainer }

foreach $file in $files {
'hier steht die Kommandozeilen-Komprimierunsanweisung
}

Kommandozeilen-Komprimierunsanweisung bekommt man raus mit /?, ist mühsam ohne GUI, ich weiß.

Ich hoffe, das stimmt einigermaßen, bin selber noch am üben ;) .

Nachtrag
| ?{ $_.PSIsContainer
nur fürs 7zippen.
 
Zuletzt bearbeitet:
Ich habe das mal ganz laienhaft versucht

Code:
mkdir "_zip_files"

for %%f in (*.zip) do (

REM unzip
"C:\Program Files\7-Zip\7z.exe" x "%%~df%%~pf%%~f" -o"%%~nf"

REM 7zip
"C:\Program Files\7-Zip\7z.exe" a -t7z "%%~nf.7z" ".\%%~nf\*"

REM move old zip file away
move ".\%%~f" .\_zip_files\

REM delete unzipped files
rmdir /q /s  ".\%%~nf\"

)
 
Zuletzt bearbeitet:
ja, das gibt eine Tüfteln, ohne konkrete eigene Beispiele wird das nichts, leider wenig Zeit um selber zu testen, aber das PS-Script oben dürfte eigentlich gleich funktionieren, wenn die Kommandozeilen-Komprimierunsanweisung stimmt.
 
Backup vom Original anfertigen!

Ich habe Zeit gefunden:
Der Code 7zippt alle Verzeichnisse. Die 7z.ps1 Datei mit dem code unten befindet sich im Verzeichnis C:\Users\XX\AppData\Local\Temp\zip\ und wird dort gestartet.
Entzippen in ein Verzeichnis dürfte kein Problem mehr sein.

Code:
$files = Get-ChildItem -dir C:\Users\XX\AppData\Local\Temp\zip\
     
foreach ($file in $files) { H:\XX\_Programme\7-Zip\7z.exe a $file".7z" $file }

Hier der code für x.ps1 zum entzippen, im gleichen Verzeichnis:
Code:
$files = Get-ChildItem -file C:\Users\XX\AppData\Local\Temp\zip\
     
foreach ($file in $files) { H:\XX\_Programme\7-Zip\7z.exe x $file }

Alles ohne Feinheiten, Verschl. usw und Fehlerkontrolle, aber selber auf grundlegende Funktion getestet!
 
Zuletzt bearbeitet:
Zurück
Oben