「Ruby でドラッグ&ドロップ」

Windows7 ではなぜか以下の技が使えないが、batファイルにはドラッグ&ドロップができるため、batファイルの中からスクリプトを呼び出すようにすれば良い。

ruby hoge.rb %1

以下はWindow XPで使えた技。

標準じゃスクリプトファイルにD&Dはできない。exeファイルを作成するとか、いくつか方法はあるけれど。簡単なのがこちらの regファイル(142B) を使ってレジストリに登録する方法。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\RubyScriptFile\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

つまりはシェル拡張のドロップハンドラをスクリプトファイルに付与するわけ。もともとは JavaScriptスクリプトファイルのところに書いてあった(RubyScriptFile のところは環境に合わせて変えよう)。

ドロップしたファイルのパスは、ARGV[0] で取得できる。

もしドロップされなければ ARGV[0] には nil が入る。ドロップしたファイルのあるディレクトリのパスを切り出して、カレントフォルダを変更するならこんな感じ。

if ARGV[0] != nil 
    Dir::chdir( File::dirname(ARGV[0]) )
end

あと別の話だけど、コマンドプロンプトの画面を出さずにスクリプトを実行したいときは、拡張子を .rbw にすればいい。Ruby Program (no window) ……痒いところに手が届くよね。