わたしの場合 cmd は標準で文字コード utf-8 を使ってるんですが
外部変形の場合は sjis なので「CHCP 932」と教えてやらないと
うまく動作してくれません
インデントが崩れる問題について
半角スペースのままだとインデントが崩れるから
アップするときに全角スペースに直してるって
ことに気が付きませんでした
ということでやり直し
REM 勾配を‰表示.bat
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #0測定値の記入位置を指示してください free(L)
REM #1ln線を指示してください free(L)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 %1
GOTO END
REM #~
◎コメント
◎バッチファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペース2個に一括置換してください。
#! ruby
# encoding: SJIS
$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")
include Math
keta=(ARGV[0] ? ARGV[0].gsub("/b","").to_i : 2)
def ika(x,keta)
begin
a=((x.to_f*10**keta).round).to_f/(10**keta)
a=a.to_i if a.to_s =~/^0\.0$/
return a
rescue
puts "he 垂直線が選ばれたようです"
exit
end
end
open("temp.txt").readlines.each{|e|
puts e unless /^hq/=~e
xy=e.split(" ")
if xy[0]=~/^\d|^-/
xy.collect!{|item|item.to_f}
if xy[0]>xy[2]
xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
elsif xy[0]==xy[2]
xy[3],xy[1]=xy[1],xy[3] if xy[3]
end
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(y**2+x**2)
kakudo=atan2(y,x)
koubai=y/x*1000
if koubai<0
koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右下り"
elsif koubai==0
koubai_moji= "i=#{ika(koubai,keta).abs}‰"
else
koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右上り"
end
printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
end
}
puts "h##{koubai_moji}"
__END__
:END