Recompress zip-files (PowerShell)

PowerShell script to recursively recompress ZIP-files with higher compression. Note that Deflate64 isn’t strictly zip standard afaik, but it works for most zip applications.

Remove-Item temp -Recurse -Force -Confirm:$false -ErrorAction Ignore
$totalSaved=0
$fileCount=0
foreach ($file in $(gci -Recurse *.zip))
{
$fileCount++
$before=$file.Length
mkdir temp
echo $file.FullName
cd temp
Write-Host "Extract $($file.Name)" -ForegroundColor Green
& "C:\Program Files\7-Zip\7z.exe" x "$($file.FullName)" -y
Write-Host "Compress $($file.Name)" -ForegroundColor Green
Remove-Item $file -Recurse -Force -Confirm:$false
& "C:\Program Files\7-Zip\7z.exe" a "$($file.FullName)" -y -tzip -sdel -slp -aoa -mx=9 -mm=Deflate64 -mfb=257 -mmt=on -mpass=15
cd ..
Remove-Item temp -Recurse -Force -Confirm:$false
$after=(gci $file).Length
$totalSaved += $before - $after
Write-Host "$($file.Name) bytes saved: $($before - $after)." -ForegroundColor Yellow
Write-Host "Total bytes saved by recompressing $($fileCount) files: $($totalSaved)" -ForegroundColor Yellow
}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from Tedds blog

Subscribe now to keep reading and get access to the full archive.

Continue reading