2017年11月6日月曜日

複数ファイル内の文字列をまとめて置換

複数のファイル内の文字列をまとめて置換するVBScriptを作ったので、覚書。
一部、非公開の文字列を隠したいがために、作成してみました。

ファイルは、batファイルと、vbsファイルの2つ。

フォルダー階層を回すときに、batのほうが便利だったので。。。

まずは、ファイル内の文字列を置換するScript(replace.vbs)
第一引数がファイルパス、それ以降が置換する文字列...

Option Explicit
Dim objFileSys 'FileSystemオブジェクト
Dim strReadFile '置換ファイル
Dim strWriteFile
Dim objRead 'ファイルオブジェクト
Dim objWrite 'ファイルオブジェクト
Dim strRep,strRepBase
Dim strLine '読み込んだテキスト
Dim index 'ファイルループ
Set objFileSys = CreateObject("Scripting.FileSystemObject")
strReadFile = Wscript.Arguments(0)
Wscript.Echo strReadFile
strRepBase = "Reserved"

strWriteFile= objFileSys.BuildPath (objFileSys.GetParentFolderName (WScript.ScriptFullName), objFileSys.GetTempName ())
Set objRead =objFileSys.OpenTextFile(strReadFile,1,false)
Set objWrite=objFileSys.OpenTextFile(strWriteFile,2,true)
Do Until objRead.AtEndOfStream = true
    strLine=objRead.ReadLine()
For index=1 To Wscript.Arguments.Count-1
strRep = strRepBase & CStr(index)
strLine = Replace(strLine, Wscript.Arguments(index), strRep)
Next
    objWrite.WriteLine strLine
Loop

objRead.Close
objWrite.Close
objFileSys.DeleteFile strReadFile
objFileSys.MoveFile strWriteFile,strReadFile
Set objFileSys = Nothing
Set objRead = Nothing
Set objWrite = Nothing

次は、バッチファイル
for文で、.txtのファイルを古パスでvbsに渡します。
置換する文字列は、「秘密の言葉」、「内緒の言葉」、「見ちゃいや」です。

for /R  %%A in (*.txt) do cscript replace.vbs "%%~fA" "秘密の言葉" "内緒の言葉" "見ちゃいや"
pause

0 件のコメント:

コメントを投稿