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

by HIRO 27. 8月 2009 14:16

前回の記事(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()

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell | DotNetZip

PowerShell で DotNetZip を使用する

by HIRO 25. 8月 2009 10:44

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()

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell | ツール | DotNetZip

コンソールウィンドウのサイズを変更する

by HIRO 12. 8月 2009 09:52

コンソールウィンドウのサイズを変更するには $host.UI.RawUIのWindowSizeプロパティを変更します。

WindowSizeプロパティはWidth(幅)とheight(高さ)を持っており、下記のようにすると、幅50高さ20のウィンドウにリサイズされます。

$rui = $host.UI.RawUI
$rui.WindowSize = New-Object System.Management.Automation.Host.Size(50,20)

現在のレート 3.0 (2人)

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell

Calendar

<<  3月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 PowerShell from Japan!!