2023-01-16に投稿

(VBS)対象パスに記載されたテキストを置換

Option Explicit

Dim targetPath : targetPath = "C:\xxxx\sample.txt"
Dim bkPath     : bkPath     = "C:\xxxx\sample_bk.txt"

'//ファイルの文字コードを指定
const strCode = "Shift-Jis"     '//文字コード指定 "Shift-Jis" "UTF-8"

call ReplaceCtoTab(targetPath,"^\r\n","")


'=========================================================
'機能名 : Sub ReplaceCtoTab
'引数   : pm_targetPath         処理対象のパス
'       : pm_pattern            パターン
'       : pm_aftStr             置換後の文字列
'処理   : 対象パスに記載されたテキストを置換
'=========================================================
Sub ReplaceCtoTab( pm_targetPath ,pm_pattern ,pm_aftStr)

    '---------------------------------------------------------------------------------------
    '//文字列の置換
    '---------------------------------------------------------------------------------------
    Dim regEx : Set regEx = New RegExp      '//RegExpオブジェクト
    With regEx
       .Pattern = pm_pattern                '//パターン
       .IgnoreCase = True                   '//大文字小文字を区別しない
       .Global = True                       '//全体を検索
       .MultiLine = True
    End With

    '---------------------------------------------------------------------------------------
    '//読み込みファイルの指定 (相対パスなのでこのスクリプトと同じフォルダに置いておくこと)
    '---------------------------------------------------------------------------------------
    Dim input
    Set input = CreateObject("ADODB.Stream")

    input.Type = 2                      '//1:バイナリ・2:テキスト
    input.Charset = strCode             '//文字コード指定
    input.Open                          '//Stream オブジェクトを開く
    input.LoadFromFile pm_targetPath    '//ファイルを読み込む

    '---------------------------------------------------------------------------------------
    '//書き出しファイルの指定 (今回は新規作成する)
    '---------------------------------------------------------------------------------------
    Dim output: Set output = CreateObject("ADODB.Stream")
    output.Type = 2
    output.Charset = strCode
    output.Open

    '---------------------------------------------------------------------------------------
    '//文字列処理
    '---------------------------------------------------------------------------------------
    Dim StrText
    StrText = input.ReadText(-1)            '//-1:全行読み込み・-2:一行読み込み
    StrText = regEx.Replace(StrText,pm_aftStr)

    output.WriteText StrText, 0             '//0:文字列のみ書き込み・1:文字列 + 改行を書き込み

    '---------------------------------------------------------------------------------------
    '//Stream を閉じる
    '---------------------------------------------------------------------------------------
    input.Close

    '---------------------------------------------------------------------------------------
    '//書き出しファイルの保存
    '---------------------------------------------------------------------------------------
    output.SaveToFile pm_targetPath, 2      '//1:指定ファイルがなければ新規作成・2:ファイルがある場合は上書き

    output.Close

    '---------------------------------------------------------------------------------------
    '//ログファイルを開く
    '---------------------------------------------------------------------------------------
    Dim objWshShell
    Set objWshShell = WScript.CreateObject("WScript.Shell") '//シェルオブジェクトの作成
    objWshShell.Run pm_targetPath                           '//シェルの実行

End Sub
ツイッターでシェア
みんなに共有、忘れないようにメモ

speasmen88

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント