ZIP 作成処理を試作中。
手慰みに、圧縮フォルダを作成するスクリプトを汎用性を考慮して改修中。
var zipmaker = function () { var _fileSystemObject = new ActiveXObject ('Scripting.FileSystemObject'); var _shell = new ActiveXObject ('Shell.Application'); var _wshShell = new ActiveXObject ('WScript.Shell') // ZIP ファイル作成 var _createZipFile = function (path) { try { // 既に存在する場合 if (_fileSystemObject.FileExists (path)) { if (7 == _wshShell.Popup ("既に存在する書庫 "+ path + " に追加してよろしいですか?", 0, "ZIP ファイル作成", 32 + 4)) return null; } else { // 空の ZIP ファイルを作成する var file = _fileSystemObject.CreateTextFile (path, false); file.Write ("PK\5\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); file.Close (); } // Shell.Folder オブジェクトを返す return _shell.NameSpace (path); } catch (e) { } return null; }; // ファイルやフォルダを追加する var _addItem = function (zipFolder, zipPath, path) { // Shell.FolderItem を取得する var file = _shell.NameSpace (_fileSystemObject.GetParentFolderName (path)).ParseName (_fileSystemObject.GetFileName (path)); // コピー zipFolder.CopyHere (file); // コピーが開始されるようにディレイを設ける WScript.Sleep (100); while (true) { try { // 追記モードで開く _fileSystemObject.OpenTextFile (zipPath, 8, false).Close (); // 開ければコピー完了とみなす return true; } catch (e2) { } WScript.Sleep (10); } } // ZIP オブジェクト作成用のオブジェクトを返す return { // ZIP オブジェクト作成処理 create: function (zipPath) { var path = _fileSystemObject.GetAbsolutePathName (zipPath) var _zipFolder = _createZipFile (path); if (_zipFolder) { return { path: path, addItem: function (filespec) { return _addItem (_zipFolder, zipPath, filespec); } }; } return null; } }; } ();
使い方はこうかなー。
var zip = zipmaker.create ("c:\\test.zip"); if (zip) { zip.addItem ("c:\\somefolder"); zip.addItem ("c:\\otherfolder\\somefile.txt"); WScript.echo (zip.path + " を作成しました。"); }
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/2540
コメント