X-Finder備忘録 このページをアンテナに追加

2013-11-04 スクリプトの活用 このエントリーを含むブックマーク

11-5-10から、スクリプトをランチャ内で使用できるようになった。

標準で使用できるのはJScript、VBScriptだが、Perl、Python、Rubyも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:');
[動作]
実行

2009-12-03 カスタマイズの小ネタ・・ファイルリストの読み込み このエントリーを含むブックマーク

X-Finderの独自ツールフォルダのファイルは、拡張子iniのテキストファイルなので、ファイルやフォルダのパスを記述したテキストファイルを整形すれば、こういったリストをX-Finderのツールフォルダとしてタブに表示することができる。

以下ではこの整形作業を行うlist2xfを使用したカスタマイズ例を紹介する。

プレイリストやファイルリストをX-Finderで表示する

以下はアイテムの追加や削除、入れ替えなどの編集を行うため、既存のファイルリストをX-Finderのタブで開くランチャ。

編集後は元ファイルを上書き保存する前提で記述する。これらは再生リスト(m3u)等の編集等に使用できる。

ファイルリストをX-Finderで開く
[パス]
Set:listpath=%focused%
Sw:0:%ComSpec% /c ..list2xf.exe -i %focused% -o %x-finder%list.ini & %x-finder%xf.exe Extra:%x-finder%list.ini
[動作]
実行
編集後元ファイルを上書きする
[パス]
Select:All
ClipPath:18
"..Clip2Txt.exe" "%listpath%"
[動作]
実行

あらかじめ"Extra:%x-finder%list.ini"をクリップフォルダに指定しておくとさらに作業が楽になる

Everything Search Engine の検索結果をX-Finderで開く

"Everything Search Engine"の検索結果を標準出力できるコマンドラインツール、"es.exe"を利用し、検索結果をlist2xfでX-Finder用のツールフォルダファイルにし、X-Finder上でEverythingの検索結果を開くランチャ。

この例ではes.exeとlist2xf.exeはxf.exeと同じフォルダに置いている。

Everythingで検索し、検索結果を開く
[パス]
Input:"Everything","Everythingで検索","キーワード",""		
Sw:0:%ComSpec% /c cd /d %X-Finder% & es "%inputdata%" | list2xf > result.ini & xf Extra:%x-finder%result.ini
[動作]
実行

以下は上記のランチャの実行画面。ここではキーワードとして".dll"と入力している。

(実行ファイルや出力ファイルの配置は上記と異なっているので注意)


以下が検索結果画面。リスト変換後にキーワードに合致するアイテムが表示される。

こちらもあらかじめ"Extra:%x-finder%result.ini"をクリップフォルダに指定しておくとさらに作業が楽になる

以下は活用例。現在のフォルダとサブフォルダのファイルやフォルダ全てを新しいタブで表示するランチャ。表示後はワイルドカードや正規表現などの通常のフィルタが使用できる。

Everythingを活用しサブフォルダのアイテム一覧をリストに表示
[パス]
Sw:0:%ComSpec% /c cd /d %X-Finder% & es -p -s "%current%" | list2xf > result.ini & xf Extra:%x-finder%result.ini
[動作]
実行

さらに以下では検索結果のツールフォルダを利用してファイルの振り分けを行うカスタマイズ例を紹介する。

ここではlist2xfの、出力結果のランチャの動作を指定する機能を使用している。


実現する機能としては、「ファイル名に含まれる文字列からファイルを移動するフォルダをリストアップし、ファイルを簡単に振り分ける」もの。

,覇力したキーワードを含むフォルダへアイテムを移動するランチャをリスト化し、

△妊螢好箸涼罎らアイテムの移動先を選択する。

具体的な操作の流れは以下のようになる。

  1. 移動したいアイテムをクリック(選択orフォーカスする)
  2. ,離薀鵐船磴鮗孫
  3. フォルダ名に含まれるであろうキーワードを入力する
  4. △離薀鵐船磴鮗孫
  5. リストから移動させたいフォルダを選択
(源列を名前に含むフォルダを送り先にしてリスト化
[パス]
Input:"Everything","Everythingを利用してファイルを整理","キーワードを入力","%focusedName%"
Sw:0:%ComSpec% /c cd %X-Finder% & es folder: %inputdata% | list2xf > move.ini -t 203
[動作]
実行
▲螢好箸ら選んでアイテムを移動
[パス]
Extra:%x-finder%move.ini
[動作]
実行

フォルダの名前さえ覚えていれば、そのフォルダがどこにあってもすぐに移動先として選択できるのが一番の利点。

フォルダ分け自体をあまりしない人、フォルダの数が多くない人にはあまり意味がないかもしれない。

はてなブックマークカウンター
この日記のはてなブックマーク数