スクリプトの活用

11-5-10から、スクリプトをランチャ内で使用できるようになった。
標準で使用できるのはJScriptVBScriptだが、PerlPythonRubyもPCで使用環境が整っていれば使用可能。

これによりビルトインコマンドだけではできなかった動作を実現することができるようになったが、
スクリプトを扱ったことがないとなかなかうまく狙った動作を実現するのは難しい。

以下は実際に活用しているスクリプトの例。

作業フォルダを指定してプログラムを起動

aviutlはXFのランチャから実行すると、そのときのXFのカレントフォルダを作業フォルダとしてしまうため、その対策。
(aviutlのパスは、"D:\bin\aviutl\aviutl.exe")

aviutlを、親フォルダを作業フォルダに指定して起動
[パス]
Script:JScript
shell = new ActiveXObject("WScript.Shell");
shell.CurrentDirectory = "D:/bin/aviutl/";
shell.Run('D:/bin/aviutl/aviutl.exe');
[動作]
実行


こちらはフォルダメニューで"D:\bin"以下のフォルダ群からプログラムを選んで起動させる場合。

フォルダメニューからプログラムを選んで親フォルダを作業フォルダに指定して起動
[パス]
Script:JScript
fs = new ActiveXObject( "Scripting.FileSystemObject" );
shell = new ActiveXObject("WScript.Shell");
WScript.Exec('ChooseFolder:"D:\\bin\\" *.folder;*.exe')
if (WScript.Env('inputdata')) {
var path1 = WScript.Env('inputdata');
var path2 = fs.GetParentFolderName( path1);
shell.CurrentDirectory = path2;
shell.Run(path1);
}
[動作]
実行

タブの表示名を変更する

同じ名前のタブが存在する状況になったときに便利なタブ名変更関係。

タブの表示名を、「一つ上のフォルダ/現在のフォルダ」に変更
[パス]
Script:JScript
var dirs = WScript.Env('Current').split('\\');
WScript.Exec('Set: TabName=' + dirs[dirs.length-2] + '/' +dirs[dirs.length-1]);
[動作]
実行
タブの表示名を、「ドライブ名//現在のフォルダ」に変更
[パス]
Script:JScript
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var path = WScript.Env('Current');
WScript.Exec('Set: TabName=' + fs.GetDriveName(path) + '//' + fs.GetFileName(path));
[動作]
実行

ファイルのパスを活用する

フォーカス位置の拡張子をコピー
[パス]
Script:JScript
WScript.Env('Clipboard',new ActiveXObject("Scripting.FileSystemObject").GetExtensionName(WScript.Env('Focused')));
[動作]
実行
現在のフォルダ名をコピー
[パス]
Script:JScript
WScript.Env('Clipboard',new ActiveXObject("Scripting.FileSystemObject").GetFileName(WScript.Env('Current')));
[動作]
実行
選択ファイルをリストに出力
[パス]
Script:JScript
var fs = new ActiveXObject("Scripting.FileSystemObject");
var Sel = WScript.Col(WScript.Env('Selected'));
var Arr = new Array();
for (i = 0; i < Sel.Count; i++) {
var strPath = Sel.Item(i);
Arr.push(strPath);
}
var file = fs.OpenTextFile(WScript.Env('C:\\temp\\list.txt'), 2, true, 0);
file.Write(Arr.join('\r\n'));
file.Close();
[動作]
実行

上では"C:\\temp\\list.txt"に選択ファイルのパスのリストが出力される。

表示切替関係

全カラムを自動幅調整
[パス]
Script:JScript
columncount = WScript.Env('Columns').split(',').length / 2;
for (i = 1; i <= columncount; i++) {
WScript.Exec('Columns:' + i + '=-1');
}
[動作]
実行
サイズとフォルダサイズ+の切り替え
[パス]
Script:JScript
str = WScript.Env('Columns')
if (str.match(/サイズ,/i)) {
WScript.Env('Columns',str.replace(/サイズ,/i,'フォルダサイズ+,'));
} else {
WScript.Env('Columns',str.replace(/フォルダサイズ\+,/i,'サイズ,'));
}
[動作]
実行
独自ソート(ファイルとフォルダの混在ソート)切り替え
[パス]
Script:JScript
WScript.Exec('Change:Style ~b~z');
WScript.Exec('Refresh:');
[動作]
実行