komorebikoboshiのブログ

プログラミング記事(趣味レベル)が多め。

ちょっと止まって、消えてほしい。

昨日のエントリーにも関連するのでだけど、例えばRubyでHello,Worldを書いたとして、ruby.exeが関連付けられている.rbファイルをそのまま実行しちゃダメで(一瞬でコンソールが消えるので見えない)、

cmd /k ruby.exe HelloWorld.rb

コマンドプロンプトを/kオプションつきで起動しないといけないのはまあ有名な話。でもこれをやると自分でコンソールを閉じないといけないんだけどそれをよく忘れる。特にエディターの外部ツールとして実行してたら気が付けば5つや6つコマンドプロンプトが開いていたなんてことが自分にはある。
そこでちょっとした小技を考えてみた。
まずこのようなBATファイルを書いて、適当なPATHの通ったフォルダに放り込んでおく。

@echo off
%*
pause

ここではRunAndStop.batと名前を付けたとする。
で、こうやって使う。

cmd /c RunAndStop ruby.exe HelloWorld.rb

これでスクリプトの実行が終わった後ポーズがかかって、何かボタンを押すとコンソールが消える。Visual Studioデバッグなしで実行と同じような感じになる。
簡単な説明を入れると「%*」はBATファイルの引数に展開される。つまり

@echo off
%* ←ここが「ruby.exe HelloWorld.rb」に置き換えられる。
pause

から、

@echo off
ruby.exe HelloWorld.rb
pause

と書かれていたのと同じことになる。
ちなみにcmd.exeの/cオプションは必要で、これがないとBATファイルを実行してくれなかった。ここで少し手間取ってしまった。
でまあこれは他の処理系の時にももちろん有効で、

cmd /c RunAndStop perl.exe test.pl

ならPerlが、

cmd /c RunAndStop python.exe test.py

ならPythonがちょっと止まって消えてくれる。ちなみに以前Pythonが苦手だと書いたけど、せっかく巳年なんだし、少しづつPythonにも慣れていこうと思う。F#やHaskellもインデント系だし。
なんか昨日とは口調が違いすぎる気がするけど、たぶん本気度の違いだと思う。やる気がない。いや、さく咲きの感想のように割と本気だったけど砕けた口調のエントリーもあるけど。
割と自慢げに書いてきたけど、有名なTipsとかだったら恥ずかしい。