■
Perlのスクリプトをダブルクリックで実行したいなぁ、と思いついて、Windowsのバッチファイルの使い方を調べてみた。*1 *2
何でバッチファイルを使おうと思ったかというと、
cygwin の shell を経由せずに実行できるのかなぁ。
↓
そういや cygwin の shell はどうやってるんだ?
↓
うわ、バッチファイルじゃん。しかも、@echo off
C:
chdir C:\cygwin\binbash --login -i
だけだし。
で、これちょっと変えたら、使えるかな、と思ったわけで。
とりあえずぐぐって、ここら辺(http://forum.nifty.com/fpcu/dosvcmd/batch.htm)参照。
XPだと、GUIのヘルプがあるそうなんだけど、見方がよくわからん。
「スタート」から、「ヘルプとサポート」を開いて、「コマンドラインリファレンス」と検索した結果を出してから、"「コマンドラインリファレンス」"をクリックすると、たどり着けた。んだけど、これもっといい見方ないのかなぁ。わかりずらすぎ。めんどいので、お気に入りに追加しときましたよ。*3
で、作ってみたバッチファイル。
@echo off echo perl %~n0 echo. C:\cygwin\bin\perl %~n0 echo. echo 終了しましたよ。 pause
perlのスクリプトのファイル名(拡張子付き)に、.cmdを付けたファイル名にする。"%~n0"ってのは、%0がバッチファイルのファイル名を表していて、~nでファイル名(.cmd抜き)を取り出してる。
最後の"pause"で、すぐに終了しないようにしてる。何かキーを押して終了。出力を見なくていいようなスクリプトだと要らない感じ。
いっぱいでてる"echo"は、最初の"@echo off"で、各コマンドを表示しないようにしてる。行頭の"@"は、このコマンド自体を出力しないように。"echo."は、空行表示。"echo ."とかやったら、普通に"."が出力されてた。
.batだと「MS-DOS バッチ ファイル」で、.cmdだと「Windows NT コマンド スクリプト」になってる。何か違うのかなぁ。なんとなく.cmdで。*4
perlのパスはwindows風に。
どうも、"/usr/bin/"は、"C:\cygwin\bin\"にあるらしい。"C:\cygwin\usr\bin\"は空だった。
cygwinのシェルから起動する時との違いは、ここら辺と、あと環境変数あたりだと思う、思う。
cygwinがよくわからん。cygwinのシェルを使えば問題ないんだけど。試しにperl.exeだけコピーして実行してみたら、いろいろとdllを要求されて、
- cygperl5_8.dll
- cygcrypt-0.dll
- cygwin1.dll
もコピーしてきたら、動いた。cygwinインストールしてないPCで実行してないんでわかんないけど、これだけでperlが動くのかなぁ。素直にActivePerlとか使え、って気もするけど。
結論。
直接.plか.plxにperlを関連付けしちゃえばいいじゃん。(ぉ