PPxのWhere is file ?を使ってみる−BackSpace編

テンポラリフォルダ

Where is file ?で検索したあとは、テンポラリフォルダで検索結果が表示されます。

タイトルバーに表示されているパスに注目。
ここで、通常のようにバックスペースで戻ろうとしても、そのテンポラリフォルダの親フォルダを上って訳の分からないところに出てしまう。検索前にいた、元のフォルダに戻ることができないのです。

Ctrl+←で、履歴をたどれば元のフォルダに戻れるのだが、普通の操作と統一させ、BackSpaceキーで元のフォルダに戻りたい。

そこで、スクリプトを使ってこれを解決します。

元のフォルダへ戻るを追加

BackSpace.js

//!*script
if (PPx.Extract("%1").match(/DOCUME.*\\LOCALS.*\\Temp/)){
 PPx.Execute("%k\"@^LEFT\"")
}else {
PPx.Execute("%K\"@BS\"")
};

これを、Scriptフォルダに保存し、カスタマイザーのキー割当てでBackSpaceに次のように登録。

*script %0\Script\BackSpace.js

これは、今いるフォルダの名前がDOCUME〜LOCALS〜\\Tempであれば履歴を戻り、そうでなければ親フォルダに上る、という動作をするスクリプトです。".*"とあるのは正規表現で、この間にはどのような文字があってもいい、というような意味ですね。DOCUME、LOCALS、Tempと三つの語が含まれていたら、という仕方で制限しているけれど、これくらい制限しておけば、他のパスとかぶって誤動作、ということもないんじゃないかなーと。
私の環境(Win2000)ではこれで行けますが、他のOSとかだとまたテンポラリフォルダのパスが違っているかもしれません。そのときは、Where is file ?を使ってTempフォルダに潜ったとき、タイトルバーに出るパスを見て、適当にDOCUME.*\\LOCALS.*\\Tempの箇所をいじって下さい。

ルートで止まるを追加

話は変わるが、ルートに来たとき、さらにバックスペースを押すとこの画面(ヒストリ表示)になる。

これを防ぐ為、ルートに来た場合BackSpaceを押しても何もしないようにするスクリプトがあり、これまではそれをバックスペースキーに割り当てていた。2ちゃんねる(【最強】Paper Plane xUI Part.2【挫折】)で頂いたものです。

parentdir.js

//!*script
if ( PPx.Extract("%1").length > 3 ) PPx.Execute("%K\"@BS\""); 

これと、先のスクリプトを組み合わせた次のスクリプトが、今僕が用いているもの。

BackSpace2.js

//!*script
if (PPx.Extract("%1").match(/DOCUME.*\\LOCALS.*\\Temp/)){
 PPx.Execute("%k\"@^LEFT\"")
}else if (PPx.Extract("%1").length > 3 ){
PPx.Execute("%K\"@BS\"")
};

カーソル下ファイルの親フォルダへ移動を追加

Everythingとの連携を考えたら、元のフォルダに戻るよりも、今あるカーソルからパスを読み取り、その親フォルダに移動、というようにしたほうが自然なのではないか、と思った。たとえば、一枚目の画像で、カーソルが"D:\data\kabegami\ネットの画像\つかさかがみ住民票.jpg"にあるとしたら、"D:\data\kabegami\ネットの画像"に戻るというように。検索前にいたフォルダに戻るよりは、こっちのほうがいいんじゃないかなと。

その場合、次のようなスクリプトになる。

BackSpace3.js

//!*script
var fs = new ActiveXObject( "Scripting.FileSystemObject" );
var dirPath = fs.GetParentFolderName( PPx.Extract("%FDC") );
if (PPx.Extract("%1").match(/DOCUME.*\\LOCALS.*\\Temp/) && (PPx.Extract("%C")=="." || PPx.Extract("%C")=="..")) {
PPx.Execute("%k\"@^LEFT\"")
}else if (PPx.Extract("%1").match(/DOCUME.*\\LOCALS.*\\Temp/)){
PPx.Execute("%j" + dirPath)
}else if (PPx.Extract("%1").length > 3 ){
PPx.Execute("%K\"@BS\"")
};

でもまあここまでする必要はあまりないかな、という気がして、自分でも今は使ってません。まあ参考までに。