ファイルやフォルダをまとめて一つに圧縮するのではなく、ファイルごと、フォルダごとに個別圧縮する。7zipを使用。
例えばマークファイルをカレントフォルダに個別圧縮したい場合は、以下のコマンドを実行する。
*script %0\Script\wrap_7z_a.js,%a*8FCDN,%1
wrap_7zip_a.js
//!*script // 7-zipを実行して圧縮先フォルダにアーカイブファイルを圧縮する // 第一引数: レスポンスファイル // 第二引数: 圧縮先フォルダ if (PPx.Arguments.Length < 2){ PPx.SetPopLineMessage("引数が正しくありません。"); PPx.Quit(-1); } // 7z.exeのパス var Exec = "C:\\Program Files\\7-Zip\\7z.exe"; var responseFile = PPx.Arguments.Item(0); var extractFolder = PPx.Arguments.Item(1); var fso = PPx.CreateObject("Scripting.FileSystemObject"); var archiveFiles = GetList(responseFile); // 個々のファイルごとに7-Zipで圧縮 for (x in archiveFiles){ if (archiveFiles[x] == ""){ break;} PPx.Execute('\"'+Exec+'\" a \"'+extractFolder+'\\'+fso.GetBaseName(archiveFiles[x])+'.zip\" \"'+archiveFiles[x]+'\"'); } // レスポンスファイルからファイル名のリストを作成 function GetList(list) { var f = CreateObject("ADODB.Stream"); f.type = 2; f.charset = "UTF-8"; f.open; f.LoadFromFile(list); text = f.readText(-1).split("\r\n"); f.close; return text; }
0 件のコメント:
コメントを投稿