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