要望とその背景
Windowsで、任意のフォルダ配下の全ファイルに対して、一括で文字列置換を行いたい。
という要望を ChatGPT に投げてみました。
個人的には、PythonとかVBAとかでいいんだけど、ソフトウェアの利用が限られている環境で、要はWindowsのバッチファイルとして実行可能な形式が必要でした。
出力内容
@echo off
setlocal enabledelayedexpansion
set "search=検索文字列"
set "replace=置換文字列"
set "folder=C:\path\to\folder"
for /f "delims=" %%i in ('dir /b /s /a-d "%folder%\*.txt"') do (
set "file=%%i"
set "content="
for /f "usebackq delims=" %%j in ("%file%") do (
set "line=%%j"
set "line=!line:%search%=%replace%!"
set "content=!content! !line!"
)
echo(!content!>"%file%"
)
検証結果
- 単純な文字列の置換では利用可能
- 正規表現は使えない
- エスケープシーケンスは使えない
※正規表現、エスケープシーケンスは ChatGPT に聞いても期待通りの回答が得られませんでした。(おそらく不可だけど、bashなどの記述を持ってきてそれっぽい回答を出してきていました。)
コメント