2.サブ窓でShift+Enterを押し、メイン窓のパスを変更する
「戻る」の履歴は、それぞれのPPCごとに記録され、%*dirhistoryで取得できるもの。ちなみに全PPC共通のヒストリは%hnで取得できる。
KC_main = {
\ENTER ,*ifmatch CX,%n %: *execute ,%'ppcx_cmd' %: *stop
%K"@\ENTER"
CLOSEEVENT ,*ifmatch CX,%n %: *alias ppcx_cmd = %%K"@\ENTER" %: *stop
\G ,*ifmatch !CX,%n %: *alias ppcx_cmd = *execute %n,%%%%j%%FCD %%: %%K"@Q" %: *ppc -r -bootid:x -single %*script(%0\Script\dirhistory2file.js9)
}
dirhistory2file.js9
//!*script
// %*dirhistory(n)をListfile形式でファイルに保存。そのファイルパスを返す
// %j %*script(%0\Script\dirhistory2file.js9,fuga.txt)
// *ppc -bootid:z -single %*script(%0\Script\dirhistory2file.js9)
// という具合に使う
// 第一引数 : 保存先のファイルパス(省略可能。その場合はテンポラリファイルに保存)
// テンポラリファイル名の作成
function getTempFile() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tDir = fso.GetSpecialFolder(2);
var tFile = fso.GetTempName();
return tDir + "\\" + tFile;
}
var arr1 = new Array();
var stream = new ActiveXObject("ADODB.Stream");
stream.type = 2;
stream.charset = 'UNICODE';
stream.open();
stream.WriteText( ";ListFile", 1); // 第2引数が 0:改行なし, 1:改行あり
for (var i = 0; i < 10; i++) {
if (PPx.Extract("%*dirhistory\("+i+"\)") != ""){
arr1.push(PPx.Extract("%*dirhistory\("+i+"\)")); // 配列に登録
} else {
break;
}
}
// 配列から重複を除く
var arr2 = arr1.filter(function (x, i, self) {
return self.indexOf(x) === i;
});
arr2.forEach(function( value ) {
stream.WriteText(value , 1); // 第2引数が 0:改行なし, 1:改行あり
});
// 第ニ引数(保存先のファイルパス)があればそこに、なければテンポラリファイルに保存
var filepath;
if (PPx.Arguments.Length < 1){
filepath = getTempFile();
} else {
filepath = PPx.Arguments.Item(0);
}
stream.saveToFile(filepath, 2); //1:新規作成 2:新規作成 or 上書き
stream.close();
PPx.Result = filepath;

0 件のコメント:
コメントを投稿