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
──────────────────────────────
コメント 0