スクリプトの意図はだいたい読み取れたように思います
うちの環境でも動くように修正してみました
インデントが崩れてしまったらごめんなさい
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 #~
◎コメント
◎バッチファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペースに一括置換してください。
#! 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