需要のありそうな、ファイル/フォルダの圧縮、ZIPファイルの展開を可能にする「ZipFile」フィーチャを解説します。
まずは、wscjsfw.jsをテキストエディタで開きます。
ファイルの末尾の方のmainメソッドの
/// =>update section Name=MainProcedure
の下にコードを書いていきます。
Windows標準(XP以降)のZipファイル操作機能を使用しています。
以下のコードをmainメソッドに追加してみましょう。
// 新しいZIPファイルを作成する
var fileName = String.Format("backup_{0:t#yyyyMMddHHmmss}.zip", new Date());
var zipFile = ZipFile.CreateNew($app(fileName));
// フォルダを追加(圧縮)する
zipFile.Append("C:\\work\\data1");
zipFile.Append("C:\\work\\data2");
zipFile.Append("C:\\work\\data3");
// このスクリプトファイルを追加(圧縮)する
zipFile.Append($appf());
このコードで、C:\work\data1~3のフォルダ、wscjsfw.jsを圧縮します。
ZIPファイルはスクリプトと同じフォルダに「backup_yyyyMMddHHmmss.zip」形式のファイル名で保存されます。
ZipFile.CreateNewメソッドで新しいZIPファイルを作成します。
ZipFileオブジェクトのAppendメソッドでファイルまたはフォルダのフルパスを指定し、圧縮をします。
$appや$appfメソッドについては別の機会に解説します。
ZIPファイルの展開も簡単にできます。
Windows標準(XP以降)のZipファイル操作機能を使用しています。
以下のコードをmainメソッドに追加してみましょう。
var zipFile = new ZipFile($app("backup.zip"));
// ZIPファイルと同じフォルダにフォルダを作って解凍
zipFile.Extract();
// 展開先を指定して解凍
zipFile.Extract($app("展開フォルダ"));
// 展開先が存在する場合、確認を取る
zipFile.Extract($app("展開フォルダ"), true);
このコードではスクリプトと同じフォルダにある「backup.zip」を展開します。
展開するにはZipFileオブジェクトの「Extract」メソッドを使用します。
上の例では、スクリプトと同じフォルダに
「backup」、「展開フォルダ」フォルダに「backup.zip」の中身が展開されます。
最後の行の展開では、上書き確認メッセージが表示されると思います。
「Extract」メソッドの引数で、展開先や、上書き確認有無のオプションを指定できます。
2011.05.05