Indexへ
(15510)//【15512】→(15521)
------------------------
【タイトル】jwc_temp.txt の バックデータについて
【記事番号】 15512 (*)
【 日時 】09/07/12 11:26
【 発言者 】Kazuo Miyake qqza3hq89@aioros.ocn.ne.jp
【 リンク 】http://www17.oc.ne.jp/~lite/



 ruby の 外部変形で jww_temp.txt の バ
ックデータが 不要になるやり方を考えまし
た。

普通は シェルのコマンドで

 copy jwc_temp.txt jwc_temp.bak > nul
 ruby -x %~f0 jwc_temp.bak > jwc_temp.txt

  や

 ruby -x %~f0 jwc_temp.txt > jwc_temp.bak
 del jwc_temp.txt
 ren jwc_temp.bak jwc_temp.txt

などとしていますが

 ruby -x %~f0

だけで プログラムを実行するやり方です。

 例として
 線を引くプログラムを考えます。

:線を引く(1)
@echo off
REM #jw
REM #1-%d 始点を指示してください。 (L)free (R)Read
REM #2%d 終点を指示してください。 (L)free (R)Read
REM #e
ruby -x %~f0
goto:eof
#!ruby -Ks
File.foreach("jwc_temp.txt") do |$_|
 case $_
  when /^hp1-/ then $p1 = $_.split[1,2]
  when /^hp2/ then $p2 = $_.split[1,2]
 end
end
$stdout=open("jwc_temp.txt","w")
puts ($p1+$p2).join(" ")

 読み取りデータは $p1, $p2 のように グ
ローバル変数とする必要があります。


 jwc_temp.txt を 読み込みながら 書き出
しをする処理を考えます。

:線を引く(2)
@echo off
REM #jw
REM #1-%d 始点を指示してください。 (L)free (R)Read
REM #2%d 終点を指示してください。 (L)free (R)Read
REM #e
ruby -x %~f0
goto:eof
#!ruby -Ks
f=File.read("jwc_temp.txt")
$stdout=open("jwc_temp.txt","w")
f.each_line do |$_|
 case $_
  when /^hp1-/ then $p1 = $_.split[1,2]
  when /^hp2/ then $p2 = $_.split[1,2]
   puts ($p1+$p2).join(" ")
 end
end

 標準出力 を jwc_temp.txt に 変更する
やり方です。puts 1+2 とすると 画面に 3
と結果がでますが それを jwc_temp.txt に
切り替えて出力させるものです。

 $stdout("jwc_temp.txt","w") を 1行
追加するだけで バックデータが不要にな
ります。それを置く位置が ややこしいの
ですが 無駄な処理をなくすことはできま
す。

 そのほかにも いろいろなやり方があると
思います。

 皆様方のご健康とご活躍をお祈り申し上
げます。


       記録 2009.07.12 三宅


Indexへ
(15512)←【15521】→(15529)
------------------------
【タイトル】Re(1):jwc_temp.txt の バックデータについて
【記事番号】 15521 (15512)
【 日時 】09/07/13 21:27
【 発言者 】sugi

sugiです。三宅さん、こんにちは。

バッチファイルの「goto :eof」というのを知らなかったのですが、
これは便利ですね。勉強になりました。

私もひとつ思いついたのですが、こんなのはどうでしょう。

:線を引く
@echo off
REM #jw
REM #cd
REM #1-%d 始点を指示してください。 (L)free (R)Read
REM #2%d 終点を指示してください。 (L)free (R)Read
REM #e
ruby -x %~f0
goto:eof
#!ruby -Ks
pt=open("jwc_temp.txt").read.scan(/^hp[12]-?\s([\s\.\-\d]*$)/)
open("jwc_temp.txt","w"){|j| j.puts pt.join(" ")}


個人的には後から動作の確認をするときのために jwc_temp.txt の
バックアップは残しておきたいです。^^;

--
sugi


Indexへ
(15521)←【15529】//(15516)
------------------------
【タイトル】Re(2):jwc_temp.txt の バックデータについて(2)
【記事番号】 15529 (15521)
【 日時 】09/07/15 08:05
【 発言者 】Kazuo Miyake qqza3hq89@aioros.ocn.ne.jp
【 リンク 】http://www17.oc.ne.jp/~lite/



▼sugiさん:
>sugiです。三宅さん、こんにちは。
>
>バッチファイルの「goto :eof」というのを知らなかったのですが、
>これは便利ですね。勉強になりました。
>
>私もひとつ思いついたのですが、こんなのはどうでしょう。
>
>:線を引く
>@echo off
>REM #jw
>REM #cd
>REM #1-%d 始点を指示してください。 (L)free (R)Read
>REM #2%d 終点を指示してください。 (L)free (R)Read
>REM #e
>ruby -x %~f0
>goto:eof
>#!ruby -Ks
>pt=open("jwc_temp.txt").read.scan(/^hp[12]-?\s([\s\.\-\d]*$)/)
>open("jwc_temp.txt","w"){|j| j.puts pt.join(" ")}
>
>
>個人的には後から動作の確認をするときのために jwc_temp.txt の
>バックアップは残しておきたいです。^^;
>
>--
>sugi


 sugi さん お世話になります。

 切れがあると思います。

 べたですが 標準入力も jwc_temp.txt に
しても構わないようです。


 ruby の 外部変形で jwc_temp.txt の バ
ックデータが 不要になるやり方を考えまし
た(2)。

 ruby -x %~f0 で
 標準入力と標準出力を jwc_temp.txt と
するやり方です。

 例として
 線を引くプログラムを考えます。

:線を引く(1)
@echo off
REM #jw
REM #1-%d 始点を指示してください。 (L)free (R)Read
REM #2%d 終点を指示してください。 (L)free (R)Read
REM #e
ruby -x %~f0
goto:eof
#!ruby -Ks
$stdin=open("jwc_temp.txt")
while gets
 case $_
  when /^hp1-/ then p1 = $_.split[1,2]
  when /^hp2/ then p2 = $_.split[1,2]
 end
end
$stdout=open("jwc_temp.txt","w")
puts (p1+p2).join(" ")

 読み取りデータは グローバル変数とする
必要はありません。


 jwc_temp.txt を 読み込みながら 書き出
しをする処理を考えます。

:線を引く(2)
@echo off
REM #jw
REM #1-%d 始点を指示してください。 (L)free (R)Read
REM #2%d 終点を指示してください。 (L)free (R)Read
REM #e
ruby -x %~f0
goto:eof
#!ruby -Ks
while gets
 case $_
  when /^hp1-/ then p1 = $_.split[1,2]
  when /^hp2/ then p2 = $_.split[1,2]
   $stdout=open("jwc_temp.txt","w")
   puts (p1+p2).join(" ")
 end
end

 ふつう、標準入力はキーボード、標準出
力は画面です。
 ruby 外部変形で 標準入力と標準出力を
jwc_temp.txt とすれば、便利なことも多い
と思います。

 そのほかにも いろいろなやり方があると
思います。

 皆様方のご健康とご活躍をお祈り申し上
げます。


       記録 2009.07.15 三宅