DotNetZipは、.NET Frameworkで簡単にZipファイルを操作するためのライブラリです。
PowerShellでも使用可能だということをnoraさんのブログ記事「.NETでZIPを操作するライブラリ・DotNetZip Library」にて教えていただきましたので、やってみました。
DotNetZipライブラリの入手についてはnoraさんのブログを参照ください。
DotNetZipライブラリを入手後、解凍してできた Ionic.Zip.dll が C:\Work に配置されている前提で話を進めます。適宜読み替えてください。
まずは、Ionic.Zip.dll を読み込みます。
[System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll");
次に、New-Objectコマンドレットで ZipFileのインスタンスを作成します。
$zipfile = new-object Ionic.Zip.ZipFile
あとは圧縮したいファイルやフォルダを追加します。
ファイルを追加する場合は AddFileメソッドを使用します。
AddFileめっそっどの第1引数は、作成するZipに含めるファイルを指定します。
第2引数は、Zip内に作成するフォルダ名を指定します。
この引数を指定すると、第1引数に指定したファイルが第2引数で指定したフォルダの中に作成されます。
たとえば、次のコードはMyLib.dll というファイルを、Zipファイル内にLIB1というフォルダを作成して配置します。
このようにしておくと、解凍されたときにLIB1というフォルダが作成され、その中にMyLib.dllが解凍されます。
$zipfile.AddFile("C:\Work\MyLib.dll","LIB1")
フォルダを追加する場合は、AddDirectoryメソッドを使用します。第1引数に圧縮したいフォルダを指定します。
次のコードはC:\Work2というフォルダを追加します。
$zipfile.AddDirectory("C:\Work")
圧縮するファイルやフォルダの追加が終わったら、Saveメソッドを使用して実際に圧縮ファイルを作成します。Saveメソッドの第1引数に保存ファイルパスを指定します。
次のコードはC:\Work2 の下に Test.zip という名前でZipファイルを作成します。
$zipfile.Save("C:\Work2\test.zip")
最後に、オブジェクトを破棄します。
$zipfile.Dispose()
上記をまとめたコードは下記の通りです。
[System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll") $zipfile = new-object Ionic.Zip.ZipFile $zipfile.AddFile("C:\Work\MyLib.dll","LIB1") $zipfile.AddDirectory("C:\Work") $zipfile.Save("C:\Work2\test.zip") $zipfile.Dispose()
コメント
[…] PowerShell で DotNetZip を使用する […]
[…] PowerShell で DotNetZip を使用する […]
[…] Author « PowerShell で DotNetZip を使用する PowerShell で DotNetZip を使用する ~自己解凍形式ファイルの作成~ […]