【覚え書き】バッチファイルで一括置換/作成(フォルダ・.txt)

2019-03-18 14:19

今回はwebサイト運用にフューチャーした、バッチファイルの紹介です。主に参考サイト様のリンクを紹介しております。

・フォルダ一括作成
・ファイル名一括変更
・テキストファイル内の文言一括置換

フォルダ一括作成

様々な名前の空テキストファイルを一気に作りたいときに便利なバッチファイルの紹介です。
(参考サイト様:https://weekly.ascii.jp/elem/000/000/016/16041/
①「list.txt」のようなテキストファイルに作成したい名前のリストを作成します。

list.txt

001_apple
002_apple
003_apple
004_apple
005_apple
001_banana
002_banana

②バッチファイルを作成します。拡張子は「.bat」にしてください。

for /f %%a in (%1) do md %%a

③「list.txt」をバッチファイルへドラックアンドドロップして実行できます。

ファイル名一括変更

これはあまり機会はないかもしれませんが、必要になった時、地獄の作業をとても楽にしてくれます。
(参考サイト様:https://www.mynote-jp.com/entry/2016/01/24/115618
参考サイト様では、「末尾に追加」「頭に追加」を紹介されています。ですので、この記事では実際に使用した例を紹介します。

複数のファイルの末尾に「_backup」をつけて一気にバックアップファイル用の名前にしたかった時に使用しました。

for %%F in (*.txt) do ren "%%F" "%%~nF_backup%%~xF"

テキストファイル内の文言一括置換

複数のテキストファイル内の文言を一括で置換できるバッチファイルです。以下の.vbsを作って実行しましょう。(※の項目をつど編集してください。)
(参考サイト様:http://q.hatena.ne.jp/1255144176

Option Explicit

Const TARGET_FOLDER = "D:\TEMP"     '※フォルダを指定
Const REPLACE_FROM = "置換前文字列" '※
Const REPLACE_TO   = "置換後文字列" '※

Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Dim objFSO, objFolder, objFile, objSubFolder, objTXT
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(TARGET_FOLDER)

For Each objFile In objFolder.Files
    Dim strFilePath, infile, outfile, strData
    strFilePath = objFSO.BuildPath(TARGET_FOLDER, objFile.Name)
    Set infile = objFSO.OpenTextFile(strFilePath,ForReading)
    strData = infile.ReadAll
    infile.Close
    Set infile = Nothing
    Set outfile = objFSO.OpenTextFile(strFilePath,ForWriting)   '(上書き)
    outfile.Write Replace(strData,REPLACE_FROM,REPLACE_TO)
    outfile.Close
    Set outfile = Nothing
Next

Set objFolder = Nothing
Set objFSO = Nothing

MsgBox "終了", vbInformation