7-zip
複数の書庫を特定のフォルダに展開
以下のファイルをScriptフォルダに保存。
wrap_7z.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 archiveFiles = GetList(responseFile);
// 個々のファイルごとに7-Zipで展開
for (x in archiveFiles){
if (archiveFiles[x] == ""){
break;}
PPx.Execute('\"'+Exec+'\" x -o\"'+extractFolder+'\\*\" '+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;
}
例えばカレントフォルダに展開したい場合は、書庫ファイルをマークして以下のコマンドを実行する。
*script %0\Script\wrap_7z.js,%a8FCDN,%1
圧縮
以下のファイルをScriptフォルダに保存。
7z_unpack.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 destFile = PPx.Arguments.Item(1);
var sorceFiles = "";
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var archiveFiles = GetList(responseFile);
var parentFolder = fso.GetParentFolderName(archiveFiles[0]);
for (x in archiveFiles){
if (archiveFiles[x] == ""){
break;}
sorceFiles += fso.GetFileName(archiveFiles[x]) + " "
}
// 作業ディレクトリを変更したあと7-zipで圧縮
PPx.Execute('*cd '+parentFolder+' %: \"'+Exec+'\" a \"'+destFile+'\" '+sorceFiles);
// レスポンスファイルからファイル名のリストを作成
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;
}
以下のコマンドで、マークファイルをカレントフォルダに圧縮する。
*script %0\Script\7z_unpack.js,%a*8FCDN,%1%*addchar(\)%{hoge%|.zip%}
個別圧縮
以下のファイルをScriptフォルダに保存。
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;
}
以下のコマンドで、マークファイルをカレントフォルダに個別に圧縮する。
*script %0\Script\wrap_7z_a.js,%a*8FCDN,%1