< 入力システムを列挙する WSH スクリプト | XSLで入れ子になった項番を振る >

November 29, 2007

圧縮フォルダを作成してコピーする WSH スクリプト

shell32.dll の Shell オブジェクトを使用してZIPフォルダを作る JScript です。これも1回使っただけでお蔵入りの予感。VC++ 版もあるけど・・・API直叩きの方がいい気がするので、それはとりあえず保留。
//
// makeZipFolder.js
//

// スクリプト ランタイム関連
var fileSystemObject = new ActiveXObject ('Scripting.FileSystemObject');
var wsShell = new ActiveXObject ('WScript.Shell');

// 固めるパス
var sourcePath = wsShell.SpecialFolders ('AppData');
sourcePath = fileSystemObject.BuildPath (sourcePath, "Test");

// デスクトップ
var desktopPath = wsShell.SpecialFolders ('Desktop');

// 作成する ZIP ファイルのパス
var zipPath = fileSystemobject.BuildPath (desktopPath, 'Test.zip');

// ZIP ファイルを作成する
var zipFile = fileSystemObject.CreateTextFile (zipPath, false);
zipFile.Write ("PK\5\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
zipFile.Close ();

// ZIP ファイルを圧縮フォルダとして取得
var shell = new ActiveXObject ('Shell.Application');
var zipFolder = shell.NameSpace (zipPath);

// コピー元
var sourceFolder = fileSystemObject.GetFolder (sourcePath);

for (var n = 0, var e = new Enumerator (sourceFolder.Files); ! e.atEnd (); e.moveNext ())
{
    // ファイルをコピー
    var sourceFolderItem = shell.Namespace (e.item ().ParentFolder.Path).ParseName (e.item ().Name);
    zipFolder.CopyHere (sourceFolderItem);
    n ++;
    
    // コピーが完全に完了するまで待機
    while (n == zipFolder.Items ().Count)
    {
        WScript.Sleep (100);
    }
}
WScript.echo ("完了しました。");

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/1937

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?