2008年7月11日
ファイル名を指定して実行をランチャー化しさらに検索までも
Windowsキー+Rで「ファイル名を指定して実行」を呼び出せるので、これをランチャーとして使っている。C:\mycommand\にユーザ環境変数でPATHを通して、そこにショートカットやらスクリプトやらを置いている。putty.lnk置いておけば、Windowsキー+R+"putty"でターミナル呼び出せたりして便利。これを使い始めてから、デスクトップはTODOのファイルを置くだけになって大分すっきりした。
調べたら当然ながら似たようなことを考える人はたくさんいるようで、検索するのもファイル名を指定して実行なんて人がいた。「ファイル名を指定して実行」フェチのツール
素晴らしいアイデアなのでパクってYSTでも出来るようにした。上記ページのGoogle版も「複数引数を読まない」「URLエンコードがshift_jis」ってのが気に食わなかったので、Google版も別のを作った。
Perlで書いて、PARでexe化した。Encodeモジュール使ってるせいかサイズがクソでかくなり、動作も遅くなった。残念。PARで作ったexeファイルって単なるZIPのようだし。手動でいらないファイル削ったりしたらもうちょっと軽くなったりするのかも。
生のPerlはこちら。ActivePerl入ってたらこっちの方が断然早い。
ソースはこんな感じ(y.exe)。
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
my $srchStr = join " ",@ARGV;
{
use utf8;
$srchStr = decode("sjis",$srchStr);
$srchStr =~ s/ / /g;
}
$srchStr = encode("utf8",$srchStr);
$srchStr =~ s/([^\w ])/'%'.unpack('H2', $1)/ego;
$srchStr =~ tr/ /+/;
system 'start','http://search.yahoo.co.jp/search?p='.$srchStr;
最終行を何とかすれば、どんな環境でも動くはず。引数がShift_jisなのが前提だけど。本当は中国語も検索できるようにしたいんだよね…。「ファイル名を指定して実行」がsjis動作なのがきつい。
それと、環境変数PATHEXTに.PLを追加しても、「ファイル名を指定して実行」からは拡張子plを補完してくれない。コマンドラインからはいけるんだけど。何故?