上記サイトを参考にして、ファイルを別名でコピーし、
一部の文字列をreplaceを行うuwsファイルを書いてみた。
//----------------------------------
//ファイルのリネーム保存
//----------------------------------
file_src = input("コピーしたいファイルをドロップしてね")
file_name = input("対象名を指定して下さい","テスト")
file_dst = replace(file_src,"XXXX",file_name)
dim fso = CreateOLEObj("Scripting.FileSystemObject")
fso.CopyFile(file_src,file_dst)
//----------------------------------
//ファイルの中身の修正
//----------------------------------
read_file = fopen(file_src,F_READ)
num_of_line = fget(read_file,-1)
write_file = fopen(file_dst,F_WRITE)
Pattern = "XXXX"
for i = 1 to num_of_line
text_line = fget(read_file,i)
fput(write_file,regReplace(text_line,Pattern,"test"))
next
fclose(read_file)
fclose(write_file)
//----------------------------------
//正規表現用関数
//----------------------------------
public regvb = CreateOLEObj("VBScript.RegExp")
Function regReplace(str,Pattern,replStr,IgnoreCase=true,Global=true)
regvb.IgnoreCase = IgnoreCase
regvb.Global = Global
regvb.Pattern = Pattern
str = regvb.Replace(str,replStr)
Result = str
Fend
後日、関数にまとめる形で改造してみた。
また、JScript使ってみた。
//----------------------------------
//正規表現用関数(JScript)
//----------------------------------
public ScriptControl= CreateOLEObj("ScriptControl")
ScriptControl.language="JScript"
ScriptControl.addCode(js)
TEXTBLOCK js
function regReplace(str,Pattern,replStr) {
var target = new RegExp(Pattern,"g");
if(str.match(target)){
var str = str.replace(RegExp.$1,replStr);
}
return str;
}
ENDTEXTBLOCK
//----------------------------------
//メイン処理
//----------------------------------
file_src = input("コピーしたいファイルをドロップしてね")
file_name = input("対象名を指定して下さい","テスト")
file_dst = FileCopy(file_src,file_name)
FileChange(file_src,file_dst,"test4")
//----------------------------------
//ファイルのリネーム保存
//----------------------------------
Function FileCopy(file_src,file_name)
dim fso = CreateOLEObj("Scripting.FileSystemObject")
file_dst = replace(file_src,"XX-XX",file_name)
fso.CopyFile(file_src,file_dst)
result = file_dst
Fend
//----------------------------------
//ファイルの中身の修正
//----------------------------------
Procedure FileChange(file_src,file_dst,repl_str)
read_file = fopen(file_src,F_READ)
num_of_line = fget(read_file,-1)
write_file = fopen(file_dst,F_WRITE)
Pattern = "XXXX = \((.*)\)"
for i = 1 to num_of_line
text_line = fget(read_file,i)
fput(write_file,ScriptControl.run("regReplace",text_line,Pattern,repl_str))
next
fclose(read_file)
fclose(write_file)
Fend
最終更新:2013年07月09日 20:55