Windowsでshbangを使って拡張子無しのファイルを実行する方法

ふとPATHEXEに.だけを追加するのを思いついてやってみたら意外なことにうまくいきました。

  1. まず、システムのプロパティから、環境変数 PATHEXT の最後に ;. (セミコロンとピリオド)を追加します
  2. 次に、もしRubyがインストールされていなければインストールします。http://rubyforge.org/projects/rubyinstaller/ が簡単
  3. コマンドプロンプトで、assoc .=rbFile を実行

one-click-installer以外でインストールした人は、必要に応じて、ftype rbFile="c:\ruby\bin\ruby.exe" "%1" %* などと実行。


以上で準備は完了。

  • fooというファイルを作ってみます。
#!cat -n
aaa
bbb
ccc
  • 実行してみます。
C:\temp>foo
     1  #!cat -n
     2  aaa
     3  bbb
     4  ccc
C:\temp>
  • gnu toolを入れていない人は、例えばこう。
#!findstr  A
Apple
apple
cat
cAt
  • 注意

最初、#!/gnu/bin/cat -n と書いて失敗。フルパスで書くなら、#!/gnu/bin/cat.exe -n のように拡張子まで必要。
Rubyのshbang解釈機能を使っているだけなので、必ずしもRubyでなくてもいいわけですが、Ruby普及活動の一環です。