1. ホーム
  2. スクリプト・コラム
  3. 腹筋

複数ディレクトリの複数ファイルを反復して一括置換するためのVBSスクリプト

2022-01-01 22:34:57

あるディレクトリやサブディレクトリにある複数のhtmウェブファイルを一括で置換する必要がある場合がありますので、以下のコードを紹介します。

以下のコードをテキスト文書にコピーし、テキスト文書の接尾辞を.vbsに変更して、直接実行します。

Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cmd /c dir /s/b *.htm > list.htm",vbHide
Wscript.Sleep 1000

sFile = "list.htm"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = objFSO.OpenTextFile(sFile,1)
Do While Not oFile.AtEndOfStream
  strLine = oFile.
  If Len(strLine) > 0 Then
   Set File = objFSO.OpenTextFile(strLine, 1)
   aryLines = File.ReadAll
   File.Close
   aryLines = Replace(aryLines, "content to be replaced", "replaced content")
   Set File = objFSO.OpenTextFile(strLine, 2)
   File.Write aryLines
   File.Close
  End If
Loop
oFile.Close

Set objFSO.DeleteFile sFile
Set objFSO = Nothing


cmd /c dir /s/b *.htm > list.htm は、サブディレクトリにある htm ファイルを list.htm ファイルに保存したリストです。

ファイルの置き換えはvbsのFileSystemObjectを使った一括置き換え、詳しくはこちらの記事を参照 記事

置換にエスケープ文字が含まれる場合は、エスケープするように注意する必要があります

 追記:VBScriptの関連エスケープ文字。

 "/" (バックスラッシュ)
 VbCrLf (改行文字。行の再開を示すのに使用)
 VbTab (水平タブ)
 Chr(8) (バックスペース)
  vbCr (キャリッジリターン文字)
 "」"(シングルクォート)
/" - > ""(ダブルクォート)