[Windows] zipをスクリプトから実行したい

更新:
.NET Framework 4.5についてのzip機能の説明は以下のmicrosoft blogに掲載されている。
ついに解禁!.NET で ZIP 制御
http://blogs.msdn.com/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2012/03/27/net-zip.aspx

更新おわり

スクリプトからいくつかのファイルをまとめて圧縮するためのコマンドをさがしたところ、FreeBSDなどにあるzipコマンドのようなものがWindowsにはないらしい。

コンテキストメニューのsendtoには圧縮機能がある。このsendtoで起動されるコマンドを応用すればいいのではないか、と思い sendto フォルダを見ると、コマンドへのショートカットではなく圧縮フォルダそのものになっていた。多くのプログラマが同じ疑問を持ち、調べたり質問したりしている。

.NET用のzipクラスを提供している http://zipstorer.codeplex.com/ の作者によれば、

  • java.util.zip namespaceを使う (J#とC#のコラボ)
  • Shell API の機能を使う
  • サードパーティーの.NETライブラリ
  • .NET以外のライブラリをmarshalする
  • コマンドラインから圧縮ツールを呼び出す

が主なアイデアだそうだ。codeplexにある以下のライブラリはstackoverflow.comでいろんなトピックで名前をみかける作者によるもの。

http://dotnetzip.codeplex.com/

.NET 4では、System.IO.Package namespaceにZipPackage classが入っている。これを使用すればサードパーティーのライブラリを使わなくてもいい。MIMEタイプを記述した xmlファイルが一緒に作られる仕様になっているところが特徴。以下のblogでは、これを使ったPowerShellスクリプトを公開されている。

http://csharper.blog57.fc2.com/blog-entry-171.html
Zip アーカイブを生成する関数

ZipPackage classはZip packageを対象としている。Zip ファイルと Zip packageは 「zipPackage = zip + structure」 という関係になっているので、zipファイルであってもzippackageで扱えないものが存在する。

スクリプトからshell APIを使うvbsがvectorで公開されていることを以下のblogで知ったのでリンク。

http://norimaki2000.blog48.fc2.com/blog-entry-399.html

Windows XPでコマンドラインからzip圧縮するためのスクリプト

プログラムの中で使うのではなく、コマンドスクリプトで圧縮するなら上記のスクリプトのような方法が手軽。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。