設定ファイル操作

作成理由

  • 設定ファイルの書出し、読込みを半自動化します。
  • レイヤ名変更を扱いやすくしました。

外部変形

  • rubyと秀丸をインストールして利用して下さい。
  • 秀丸のパスについては適宜変更して下さい。
@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
:2
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwf.mac file.txt
start ruby -Ks -x %~f0 %1
goto END
:3
copy jwc_temp.txt jwc_temp.bak
ruby -Ks -x %~f0 %1
goto END
:4
:5
copy jwc_temp.txt jwc_temp.bak
"C:\Program Files (x86)\Hidemaru\hidemaru.exe" /xseljwl.mac file.txt
start ruby -Ks -x %~f0 %1
goto END

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

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

opt=ARGV[0].to_i

unless FileTest.file?("file.txt")
  puts "he file.txtが見つかりません"
  exit
end

if opt==3
  file=open("file.txt").read.chomp
  a=[]
  unless FileTest.file?(file)
    puts "he #{file}が見つかりません"
  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
        puts "lg"+i.to_s(16)+" 11"
        puts "lgn"+f
      else
        puts "ly"+(j-1).to_s(16)+" 11"
        puts "lyn"+f
      end}}
  open("jwc_temp.bak").read.each_line{|e|
    if /^hq/=~e
      puts "h# レイヤ名を読み込みました"
    else
      print e
    end
   }
  exit
end

require 'win32ole'

shell = WIN32OLE.new("WScript.Shell")
shell.AppActivate("jw_win");sleep(0.3)
if opt==1
  shell.Sendkeys("%sfw");sleep(0.3)
  shell.Sendkeys("^v%sy+a");sleep(3)
  file=open("file.txt").read.chomp
  s=open(file).read.encode(Encoding::SJIS,invalid: :replace,undef: :replace)
  f=open(file,"w")
  f.print s
elsif opt==2
  shell.Sendkeys("%sfr");sleep(0.3)
  shell.Sendkeys("^v%o+a");sleep(0.3)
elsif opt==4
  shell.Sendkeys("%sfw");sleep(0.3)
  shell.Sendkeys("^v%sy+a");sleep(0.3)
elsif opt==5
  shell.Sendkeys("%sfr");sleep(0.3)
  shell.Sendkeys("^v%o+a");sleep(0.3)
end

__END__
:END

  • マクロの置き場所は「その他→動作環境→パス」タブの「マクロファイル用のフォルダ」で設定できます。
//seljwf.mac

openfile "*.jwf";
$fl=filename;
setclipboard $fl;
#hwnd=hidemaruhandle(0);
if(linecount==1)insert "\n";
save;
setactivehidemaru findhidemaru("file.txt");
closehidemaruforced #hwnd;
selectall;delete;insert $fl;save;quit;
//seljwl.mac

openfile "*.jwl";
$fl=filename;
setclipboard $fl;
#hwnd=hidemaruhandle(0);
replaceallfast "PRTCT_CH.*","PRTCT_CH =  1 ",regular;
if(linecount==1)insert "\n";
save;
setactivehidemaru findhidemaru("file.txt");
closehidemaruforced #hwnd;
selectall;delete;insert $fl;save;quit;

注意点

  • ruby 2.6.5p114 にて動作確認してます。
  • 秀丸エディタV9.19にて動作確認しています。
  • 【レイヤ名読込み】のみを単品で使いたい場合はバッチファイルと同じフォルダに file.txt を用意して、読み込む jwf ファイルのパスを書出しておいてください。こんな感じで。
c:\jww\bat\test\jw01.jwf

コメント