Zipファイル内のPNGファイルを最適化するPowerShellスクリプト「ZipOptiPNG.ps1」

powershell コンピュータ
powershell
複数の画像ファイルをアーカイブしたZipファイルをストレージに展開し、OptiPNGでPNGファイルのファイルサイズの最適化を施します。
そのあとZipファイルにアーカイブしなおします。
圧縮済みの画像ファイルなどをZipファイルで圧縮してもあまり小さくならないので、圧縮しないオプションを選択しています。
Compress-Archiveで元のZipファイルと同じようなファイル構成にするためGet-ChildItemでファイルの一覧を取得しパイプラインで>Compress-Archiveへ引き渡しています。

Param($srcPath = "H:\Pictures.zip", $dstPath = "H:\ps1\Pictures.zip")


if (Test-Path -LiteralPath $dstPath)
{
    Remove-Item -LiteralPath $dstPath
}

$tmpPath = Join-Path (Get-Location).Path (Get-Date).ToString('yyyyMMdd')
if (Test-Path -LiteralPath $tmpPath)
{
    Remove-Item -LiteralPath $tmpPath -Force -Recurse
}
New-Item -Path $tmpPath -ItemType Directory
Expand-Archive -LiteralPath $srcPath -DestinationPath $tmpPath

Get-ChildItem -LiteralPath $tmpPath -Filter "*.png" -Recurse | ForEach-Object -Process {
    . "H:\tools\optipng-0.7.7-win32\optipng.exe" $_.FullName
}


Get-ChildItem -LiteralPath $tmpPath | Compress-Archive -DestinationPath $dstPath -CompressionLevel NoCompression

(Get-Item $srcPath).Length
(Get-Item $dstPath).Length

コメント