def traverse(path,array)
if FileTest.directory?(path)
dir=Dir.open(path)
while name=dir.read
next if name == "."
next if name == ".."
traverse(path+"/"+name,array)
end
dir.close
else
process_file(path,array)
end
end
def process_file(path,array)
array<< path if path =~ /\.bat$/
end
def file_open(file_name)
$stdout=open(file_name,"w")
puts(";G+ for JWW DATA FILE
;外変メニュー・データ・ファイル
; ◆メモ帳やエディタで編集する際は、注意して書替えてください。◆
; page= 行には、ページ番号(1〜4)を記入します。
; group_1= 行には、分類項目1の名前を記入します。
; group_2= 行には、分類項目2の名前を記入します。
; group_3= 行には、分類項目3の名前を記入します。
; group_4= 行には、分類項目4の名前を記入します。
; tytle= 行には、外変のタイトル(全角25文字まで)を記入します。
; bat= 行には、外変のバッチファイル名をフルパスで記入します。
; 例 c:\jww\gaibu\abc.bat ドライブ名も必要です。
; comment= 行には、覚え書きを記入します。
; 無記入でもかまいません。複数行でもかまいません。
; comment= の代わりに行頭# も可能です
;-----パスの定義-------------
; bat= の行で置換します。フルパスを何度も書く必要がなくなります。
; 下記の定義なら、bat= c:\jww\gaibu\abc.bat → bat= %p1%abc.bat と簡略可
; 注意:\ % の数や半角スペースのチェック
%p1%= c:\jww\
%p2%=
%p3%=
%p4%=
;----------------------------
")
end
file_open(file_name)
array=[]
a=Dir.entries(path)
a.each{|item2|
if item2=~/\.bat$/
if item2=~/^g_plus\.bat/i
next
else
array<<(path+"/"+item2)
end
elsif item2=~/^\.+$/
next
else
traverse(path+"/"+item2,array)
end
}
n=0;j=0
array.uniq.each{|item|
word="";jww=0;tytle=""
open(item,"r"){|f|
while word=f.gets
if word=~/^@?REM\s+#jw/i
jww=1
end
if word=~/^@?REM\s+([^#\s].+)$/i
tytle=$1 if tytle == ""
end
break if tytle != "" && jww == 1
end
}
if tytle != "" && jww == 1
if n==193
j += 1
puts "end",";----------------------------"
$stdout.close
if file_name =~ /(\d+)(\.dat)$/
file_name=$`+"#{j}"+$2
else
file_name=$`+"#{j}"+$& if file_name =~ /\.dat$/
end
file_open(file_name)
n=0
end
if n==0
puts(";----------------------------\npage= 1\n;----------------------------\ngroup_1= 定番\n;----------------------------")
elsif n==22 || n==86 || n==150
puts("group_2=\n;----------------------------\n;----------------------------")
elsif n==44 || n==108 || n==172
puts("group_3=\n;----------------------------\n;----------------------------")
elsif n==54 || n==118 || n==182
puts("group_4=\n;----------------------------\n;----------------------------")
elsif n==64
puts(";----------------------------\npage= 2\n;----------------------------\ngroup_1= 定番\n;----------------------------\n;----------------------------")
elsif n==128
puts(";----------------------------\npage= 3\n;----------------------------\ngroup_1= 定番\n;----------------------------\n;----------------------------")
end
puts "tytle=#{tytle}","bat= "+item.gsub("/","\\"),
"#"+item.gsub("/","\\"),";----------------------------"
n += 1
end
}
puts "end",";----------------------------"
def traverse(path,array)
if path =~ /\.[a-z]+$/i
process_file(path,array)
else
begin
dir=Dir.entries(path)
rescue
else
dir.each{|item|
case item
when /^\.+$/
next
else
traverse(path+"/"+item,array)
end
}
end
end
end
def process_file(path,array)
array<< path if path =~ /\.bat$/
end
def file_open(file_name)
$stdout=open(file_name,"w")
puts(";G+ for JWW DATA FILE
;外変メニュー・データ・ファイル
; ◆メモ帳やエディタで編集する際は、注意して書替えてください。◆
; page= 行には、ページ番号(1〜4)を記入します。
; group_1= 行には、分類項目1の名前を記入します。
; group_2= 行には、分類項目2の名前を記入します。
; group_3= 行には、分類項目3の名前を記入します。
; group_4= 行には、分類項目4の名前を記入します。
; tytle= 行には、外変のタイトル(全角25文字まで)を記入します。
; bat= 行には、外変のバッチファイル名をフルパスで記入します。
; 例 c:\\jww\\gaibu\\abc.bat ドライブ名も必要です。
; comment= 行には、覚え書きを記入します。
; 無記入でもかまいません。複数行でもかまいません。
; comment= の代わりに行頭# も可能です
;-----パスの定義-------------
; bat= の行で置換します。フルパスを何度も書く必要がなくなります。
; 下記の定義なら、bat= c:\\jww\\gaibu\\abc.bat → bat= %p1%abc.bat と簡略可
; 注意:\\ % の数や半角スペースのチェック
%p1%= c:\\jww\\
%p2%=
%p3%=
%p4%=
;----------------------------
")
end
file_open(file_name)
array=[]
a=Dir.entries(path)
a.each{|item2|
if item2=~/\.bat$/
if item2=~/^g_plus\.bat/i
next
else
array<<(path+"/"+item2)
end
elsif item2=~/^\.+$/
next
else
traverse(path+"/"+item2,array)
end
}
n=0;j=0
array.uniq.each{|item|
word="";jww=0;tytle=""
open(item,"r"){|f|
while word=f.gets
if word=~/^@?REM\s+#jw/i
jww=1
end
if word=~/^@?REM\s+([^#\s].+)$/i
tytle=$1 if tytle == ""
end
break if tytle != "" && jww == 1
end
}
if tytle != "" && jww == 1
if n==193
j += 1
puts "end",";----------------------------"
$stdout.close
if file_name =~ /(\d+)(\.dat)$/
file_name=$`+"#{j}"+$2
else
file_name=$`+"#{j}"+$& if file_name =~ /\.dat$/
end
file_open(file_name)
n=0
end
if n==0
puts(";----------------------------\npage= 1\n;----------------------------\ngroup_1= 定番\n;----------------------------")
elsif n==22 || n==86 || n==150
puts("group_2=\n;----------------------------\n;----------------------------")
elsif n==44 || n==108 || n==172
puts("group_3=\n;----------------------------\n;----------------------------")
elsif n==54 || n==118 || n==182
puts("group_4=\n;----------------------------\n;----------------------------")
elsif n==64
puts(";----------------------------\npage= 2\n;----------------------------\ngroup_1= 定番\n;----------------------------\n;----------------------------")
elsif n==128
puts(";----------------------------\npage= 3\n;----------------------------\ngroup_1= 定番\n;----------------------------\n;----------------------------")
end
puts "tytle=#{tytle}","bat= "+item.gsub("/","\\"),
"#"+item.gsub("/","\\"),";----------------------------"
n += 1
end
}
puts "end",";----------------------------"