PowerShell で DotNetZip を使用する

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 を使用する” への3件のコメント

  1. ピンバック: [Tips]DotNetZipライブラリを使用して、Zipファイルを解凍する

  2. ピンバック: PowerShell で DotNetZip を使用する ~自己解凍形式ファイルの作成~

  3. ピンバック: PowerShell で DotNetZip を使用する ~ファイル名に日本語が含まれる場合の対応~

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>