SSブログ

BATファイルにRubyスクリプトを埋め込む例 [Ruby]

 Rubyには、コマンドラインオプションとして、「-S」と「-x」があります。

 -Sは、スクリプトを環境変数「PATH」を使って検索し実行するためのオプションです。

 -xは、ファイルに埋め込まれたRubyスクリプトの実行を指定します。このオプションが指定されていると、与えられたファイルをそのまま実行せず、「#!」で始まり「ruby」を含む行を探して、そこをスクリプトの先頭として解析を開始します。
 それ以降に「__END__」と書かれた行があれば、そこをスクリプトの終わりとします。なければ、ファイルの終わりをスクリプトの終わりとします。

 実際の使い方については、下記のサンプルをご参照ください。BATファイル名の「ex001」と入力すると、埋め込まれたRubyスクリプトが実行されます。RubyでDOSコマンドを作ったような気分が味わえます…^^;

(by 心如)

──────────────────────────────
ECHO OFF
ruby -S -x "%0.bat" %*
goto end
#! ruby -Ks
#
# コレクション完成の模擬実験(BATファイル埋め込み)
#
# 2012.04.14 ───── coded by 心如

st = Time.now   # 時刻データの取得
srand(st.sec ^ st.usec ^ Process.pid)   # 乱数の初期化

Omake_max = 12  # おまけの種類数
Kai = 10        # 試算する人数
sc = 0          # 購入総数
max_cnt, min_cnt = 12, 40
(1..Kai).each do |n|
    omake = []
    cnt = 0
    until (omake.uniq).size == Omake_max do
        omake << rand(Omake_max) + 1
        cnt += 1
    end
    sc += cnt
    max_cnt = cnt if cnt > max_cnt
    min_cnt = cnt if cnt < min_cnt
    printf("%5d人目:%3d個(総数:%5d個)、平均:%6.3f個\n",
        n, cnt, sc, sc.to_f / n)
end
puts "(最多:#{max_cnt}個、最少:#{min_cnt}個)"

__END__
:end
ECHO ON
──────────────────────────────
Ruby ex001.jpg


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。