PowerShell で DotNetZip を使用する ~ファイル名に日本語が含まれる場合の対応~

前回の記事(PowerShell で DotNetZip を使用する)で、PowerShelでZIPファイルを作成する方法について説明しました。

しかし、前回紹介した方法では、ファイル名に日本語が含まれている場合は文字化けを起こし、正常に解凍することができないファイルが作成されてしまします。

この問題を回避するには、New-Objectコマンドレットでオブジェクトを作成するときにエンコーディング(Shift_Jis)を指定します。

$Encoding = [System.Text.Encoding]::GetEncoding("shift_jis")
$zipfile = new-object Ionic.Zip.ZipFile($Encoding)

エンコーディングにShift_Jisを指定してファイルを圧縮する例は下記の通りです。

[System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll")
$Encoding = [System.Text.Encoding]::GetEncoding("shift_jis")
$zipfile = new-object Ionic.Zip.ZipFile($Encoding)
#↓エンコーディングを指定すれば、日本語を含むファイル名であってもOK
$zipfile.AddFile("C:\Work\日本語を含むファイル名.xls","")
$zipfile.Save("C:\Work2\test.zip")$zipfile.Dispose()

コメント

タイトルとURLをコピーしました