• 締切済み

Rubyによるテキスト変換について

プログラムはあまり判りませんので、内容が不適切な場合には、ご容赦ください。 やりたいことは、複数のテキストを一括でリストに基づいて置換することをやりたいと思っております。 フリーのソフトを使えばっと言われるかも知れませんが、WindowsでもMacintoshでも同じようなことをやりたいと思っています。環境に問わない変換がしたいので。。。 Windowsでのイメージは、 テキストをBATファイルなどにドラッグすると、テキストが置換されるイメージです。 テキストは上書きされずに、同階層に「変換済」のフォルダを作成するか、テキストのファイル名を変更するなどが出来ればベストです。 同様に、Macintoshでも同様に動きが出来ればと思っております。 リストなどは「Windows」「Macintosh」の両方で共用したいので、 サーバに置いておいての運用をしたいと思っております。 変換は「gsub」で記述したいと思っております。 あまり素人的な内容で大変申し訳ないのですが、 何卒、よろしくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

Windowsの場合、BATファイルにドロップすると、バッチスクリプトの中で、%1 %2 とか %* で参照できます。 ケース1: バッチファイルと別にRubyスクリプトのファイルを分ける場合 BATでは、 @ruby "Rubyスクリプトファイル名" %* とかくと、Rubyからは、ARGV[0], ARGV[1], ・・・ で参照できます。 ケース2: バッチファイルの中にRubyスクリプトを埋め込む場合 バッチファイルに、 @echo off ruby -x "%~f0" %*    ← -x をつけることで#!rubyまでの部分をスキップする goto :EOF #! ruby ARGV.each do |file| open(file+".output","w") do |out| IO.foreach(file) do |line| out.puts line.gsub(/aaaa/,"bbbbb") end end end とか。 BATを使わない別案: expolorerでショートカットを作り、リンク先を ruby.exe "Rubyスクリプトファイル名" または、 rubyw.exe "Rubyスクリプトファイル名" にする。BATファイルを使わないので、rubyでなくrubywを使うとコマンドプロンプトウィンドウが開きません。 いずれも、ruby.exeにパスが通ってなければフルパスで書いてください。

すると、全ての回答が全文表示されます。
  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

Macintoshの場合だけを回答しておきます。 私は似たようなことをやっております。 Macに標準でついているAutometorという自動化を助けてくれるソフトがあります。 その中の「シェルスクリプトを実行」というアクションを使っています。これはシェルスクリプトだけではなく、Rubyなどのスクリプトも直接実行できます。 スクリプトへの引数は、ARGV[0], ARGV[1] ...にドラッグしたファイルの絶対パスが入れられますので、Ruby側でそれを見て処理すれば良いわけです。 input_files=ARGV input_files.each do |input_file| のような感じでです。これで複数のファイルにも対応できます。 特別なことをやっているわけではないので、スクリプト自体は他のコンピュータでも変更なしで動くと思いますが、 実際には、Autometorを起動し、「シェルスクリプトを実行」のアクションを作り、その中にRubyスクリプトを入れアプリケーションとして保存する。それだけです。 できたアプリケーションにファイルをドラッグするとスクリプトが実行されます。

すると、全ての回答が全文表示されます。

関連するQ&A