ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

【WSH】テキストファイルの中身を置換

指定ディレクトリ配下にある、テキストファイルの中身を置換するスクリプト。
Call replace(“D:\dev\WSH\テストフォルダ”, “てすとA” & vbCrLf & “てすとB” & vbCrLf, “”)
赤いのがパス、青が置換したい文字列、オレンジが置換後の文字列。
複数行にマッチングするようになってます。

エンジニアでもあまり使う機会がないと思うけれど、自分用の覚書。

Call replace("D:\dev\WSH\テストフォルダ", "てすとA" & vbCrLf & "てすとB" & vbCrLf, "")

Sub replace(path, before, after)
    Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
    Set oFsoIn = WScript.CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFso.GetFolder(path)

    '再帰
    For Each Folder In oFolder.SubFolders
        Call replace(Folder, before, after)
    Next

    Set reg = CreateObject("VBScript.RegExp")
    reg.Pattern = before
    reg.MultiLine = True
    reg.Global = True
    
    For Each file In oFolder.Files
        Set oFile = oFsoIn.OpenTextFile(file)
        buf = oFile.ReadAll
        
        buf = reg.replace(buf, after)
        oFile.Close
        
        Set oFile = oFsoIn.CreateTextFile(file)
        oFile.WriteLine(buf)
        oFile.Close
    Next

    Set oFso = Nothing
    Set oFsoIn = Nothing
    Set oFolder = Nothing
    
    Wscript.Echo "おしまい!"
End Sub

参考
猫にWeb さま VBSで正規表現を使用してテキストの文字列を置換する

コメントを残す

メールアドレスが公開されることはありません。