設定ファイル操作2

作成理由

  • 設定ファイル操作の ruby で sendkeys を使った操作が不安定でうまく動作しない場合があるらしい。
  • UWSCを使って考え直してみる。

外部変形

  • rubyと秀丸とUWSCをインストールして利用して下さい。
  • 文字コードはSJISで保存して下さい。

@rem 設定ファイル操作
@echo off
REM #jww
REM #cd
goto %1
REM #hc【設定ファイル操作】 ボタンを選択して下さい。
REM #hm【設定ファイル操作】 |jwf書出し[L]|jwf読込み[R]|レイヤ名読込み|jwl書出し|jwl読込み|
REM #:1
REM #:2
REM #:3
REM #:4
REM #:5
REM #hf
REM #e

:1
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwf.mac file.txt
start "C:/Program Files (x86)/uwsc/uwsc.exe" jwfw.uws
goto END
:2
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwf.mac file.txt
start "C:/Program Files (x86)/uwsc/uwsc.exe" jwfr.uws
goto END
:3
copy jwc_temp.txt jwc_temp.bak
copy jwc_temp2.txt jwc_temp.txt
goto END
:4
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwl.mac file.txt
start "C:/Program Files (x86)/uwsc/uwsc.exe" jwfw.uws
goto END
:5
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwl.mac file.txt
start "C:/Program Files (x86)/uwsc/uwsc.exe" jwlr.uws
goto END

:COMENT
設定ファイルの読込み、書出しをします。
【jwf書出し】:jwfファイルを書出します
【jwf読込み】:jwfファイルを読込みます
【jwl書出し】:jwlファイルを書出します
【jwl読込み】:jwlファイルを読込みます。
【レイヤ名読込み】:jwfファイル読込み後にレイヤ名を読込みます
"


#! ruby -Ks

$stderr=open("error.txt","w")
$stdout=open("jwc_temp2.txt","w")

file=open("file.txt").read.chomp
a=[]
open(file).read.each_line{|e|
  if /^LAYNAM_[0-9A-F]/=~e
    a << e.chomp.gsub(%r|^[^=]*=|,"").gsub(","," ,")
      .gsub(%r|,$|,", ").split(",").map{|e| e.gsub(%r| $|,"")}
  end}
p a
a.each_with_index{|e,i| e.each_with_index{|f,j|
    if j==0
      puts "lg"+i.to_s(16)+" 11"
      puts "lgn"+f
    else
      puts "ly"+(j-1).to_s(16)+" 11"
      puts "lyn"+f
      puts "ly0 11" if j==16
    end}}

:END
//jwfw.uws

CTRLWIN(GETID("cmd.exe"),HIDE)
ACW(GETID("jw_win"))
KBD(VK_ALT,DOWN,100)
KBD(VK_S,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_F,CLICK,100)
KBD(VK_W,CLICK,100)
KBD(VK_CTRL,DOWN,100)
KBD(VK_V,CLICK,100)
KBD(VK_CTRL,UP,100)
KBD(VK_ALT,DOWN,100)
KBD(VK_S,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_Y,CLICK,100)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)

EXEC("rubyw -x "+GET_UWSC_NAME,true)
TEXTBLOCK ruby

#! ruby -Ks

$stderr=open("error.txt","w")
$stdout=open("temp.txt","w")

file=open("file.txt").read.chomp
s=open(file).read.encode(Encoding::SJIS,invalid: :replace,undef: :replace)
f=open(file,"w")
f.print s
__END__
ENDTEXTBLOCK

//jwfr.uws

CTRLWIN(GETID("cmd.exe"),HIDE)
ACW(GETID("jw_win"))
KBD(VK_ALT,DOWN,100)
KBD(VK_S,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_F,CLICK,100)
KBD(VK_R,CLICK,100)
KBD(VK_CTRL,DOWN,100)
KBD(VK_V,CLICK,100)
KBD(VK_CTRL,UP,100)
KBD(VK_ALT,DOWN,100)
KBD(VK_O,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)


EXEC("rubyw -x "+GET_UWSC_NAME,true)
TEXTBLOCK ruby

#! ruby -Ks

$stderr=open("error.txt","w")
$stdout=open("jwc_temp2.txt","w")

file=open("file.txt").read.chomp
a,b=[],[]
open("jwc_temp.bak").read.each_line{|e|
  if /^hq/=~e
    puts "h# レイヤ名を取り込みました".encode(Encoding::SJIS)
  else
    print e
  end}
open(file).read.encode(Encoding::SJIS,invalid: :replace,undef: :replace).
  each_line{|e|
    if /^LAYNAM_[0-9A-F]/=~e
      a << e.chomp.gsub(%r|^[^=]*=|,"").gsub(","," ,")
        .gsub(%r|,$|,", ").split(",").map{|e| e.gsub(%r| $|,"")}
    end}
a.each_with_index{|e,i| e.each_with_index{|f,j|
    if j==0
      b << "lg"+i.to_s(16)+" 11"
      b << "lgn"+f
    else
      b << "ly"+(j-1).to_s(16)+" 11"
      b << "lyn"+f
      #puts "ly0 11" if j==16
    end}}
#b.reverse.map{|e| puts e}
b.map{|e| puts e}
__END__
ENDTEXTBLOCK
//jwlr.uws

CTRLWIN(GETID("cmd.exe"),HIDE)
ACW(GETID("jw_win"))
KBD(VK_ALT,DOWN,100)
KBD(VK_S,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_F,CLICK,100)
KBD(VK_R,CLICK,100)
KBD(VK_CTRL,DOWN,100)
KBD(VK_V,CLICK,100)
KBD(VK_CTRL,UP,100)
KBD(VK_ALT,DOWN,100)
KBD(VK_O,CLICK,100)
KBD(VK_ALT,UP,100)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)

  • 秀丸マクロについては前回と同じなので省略。

コメント