Windows 環境(DOS プロンプト)で Ruby のスクリプトファイル script.rb を実行するには,
ruby script.rbとプロンプトから入力する必要があります. これが面倒だと思ったことはありませんか?
実は,UNIX(例えば Linux)環境だと script.rb と入力するだけでスクリプトを実行することができます. Ruby のサンプルの中には,ファイルの一行目に
#!/usr/local/bin/rubyと書いてあるスクリプトがあります. こう書いておけば,UNIX では script.rb だけで実行できてしまいます.
Windows の世界でも同じようなことができたらいいなと思いませんか? 実は,そういったことを実現するソフトがいくつかあります.
Windows 環境で実現するには, bash や tcshを使う という方法もあります. (私は,bash は試したことがありませんが,tcsh 上で動くことを確認しました.)
ですが,ここでは SOS を使う方法を説明します. (でないとタイトルの mkcom に話がつながらないし Ruby のスクリプトも紹介できないので.^^;)
SOS は,新出さんが作成された Perl や Ruby などのスクリプトを com 化するためのフリーソフトです. com 化すれば,DOSプロンプトで実行することができるようになります. SOS を使って script.rb から script.com を作れば,DOS プロンプトからscriptと入力するだけで実行することができるようになります.
SOS そのものは, 新出尚之さんのサイト から入手できます.
script.rb ファイルから SOS を使って script.com ファイルを作るのは 簡単です.
- script.rb のファイルの先頭に SOS の中に含まれる sos.hdr ファイルを そのままくっつけます.
- 次の行に
とつけます.#ruby %0 %@- こうして出来上がったファイルを script.com という名前で保存します.
これで終わりです. DOS プロンプトから script と入力するだけで実行できます.
このように SOS を使って com 化するのは簡単なのですが, com化するスクリプトを Ruby で作っておけばもっと楽ができます. SOS には,com 化する Perl のスクリプトが添付されているのですが, ちょっと私には使いづらかったので,自分が使いやすいものを作ることにしました. com 化するスクリプト自身も SOS を使って com 化しています. スクリプトの名前は mkcom です.
仕様はいたってシンプルです.
Ruby のスクリプトを com 化するには DOS プロンプトから
mkcom ruby script1.rb script2.rb ・・・と入力します. これで,script1.com,script2.com,・・・ を作成します.
また Perl のスクリプトを com 化するには
mkcom perl script1.pl script2.pl ・・・と入力します. これで,script1.com,script2.com,・・・ を作成します.
一般に
mkcom 実行コマンド名 スクリプトファイル名でスクリプトファイルをcom化します.
従って,私のように,ruby.exe を rbmw.exe と名前を変更して使用している 場合は,
mkcom rbmw script.rbと実行する必要があります.
また jperl.exe をお使いの方は
mkcom jperl script.plと実行する必要があります.
mkcom のコマンドライン引数の数が足りない場合は,使い方を表示します.
このサイトで最初の Ruby スクリプトを公開します. Windows 95 でしか動作確認してません. Windows NT や Windows 98 で動くかどうか不明です. 私は,何の保証もしませんので,ご自分の責任でお使いください. Windows 系以外のOSで Ruby をお使いの方はダウンロードしても 何の役にもたちません.(^^;
mkcom(というよりSOS)に関して質問がありましたので,ここに追加します. (構成を考えて改めて書き直すのが面倒なので追加していくことにしました.m(_ _;)m)
Q1. com 化したスクリプトを実行するときに com 化する前のスクリプトは必要ですか?
不要です.例えば,
mkcom ruby script.rbを実行して,script.com を作成した場合, script.com を実行するために script.rb は必要ありません.
Q2. Ruby(Perl)がなくても com 化したスクリプトは動きますか?
残念ながら動きません.
Ruby(Perl)がインストールされていない環境で, com 化したスクリプトを実行しても失敗します. ("err 20"と画面に表示します.)
com 化する前のスクリプト script.rb を使ってruby script.rbを実行して動く環境でない場合 script.com は動作しません.
Q3. com 化したスクリプトを編集することはできますか?
できます.
com 化したスクリプトファイルは,普通のテキストファイルです. ですから,メモ帳等の普通のテキストエディタで編集することが可能です.興味のある方は,mkcom.com をこのページからダウンロードして テキストエディタで開いてみてください. 先頭の15行は,へんな文字が続いていますが, それ以降は,普通の ruby スクリプトです.
16行目以降を取り出せば,mkcom.rb が出来上がります. (必殺逆アセンブル (^^;)さらに,mkcom を使って com 化したスクリプトの先頭の15行はすべて "#" で始まっていますので,Ruby ではコメントとして扱われます. ですから "ruby -r debug mkcom.com" と実行すれば mkcom.com をデバッグモードで起動することも可能です.
Q4. com 化したスクリプトでリダイレクトはできますか?
できます.
試しに "mkcom > log.txt" とやってみてください. mkcom の簡単な使い方が,log.txt に出力されるはずです.