ファイル中の文字列を一括置換する

[shell]
@ECHO OFF
COPY %1 $TEMP$>NUL||GOTO :EOF
TYPE NUL>%1

FOR /F "tokens=1* delims=" %%I IN ($TEMP$) DO (SET tmpS=%%I&&CALL :SUB_OUT %*)

DEL $TEMP$
GOTO :EOF

:SUB_OUT
CALL SET tmpT=%%tmpS:%2=%3%%
ECHO %tmpT%>>%1
GOTO :EOF
@ECHO ON
[/shell]

DOSコマンドでテキストファイル内部の文字列を一括置換するには、このようなバッチファイルを作成して、コマンドライン引数に対象ファイルのパス、置換前文字列、置換後文字列を与えて呼び出せば良い。
 
例えば、このバッチファイルを『replace.bat』という名前で作成し、カレントディレクトリにある『a.txt』の中身について、『恋』を『愛』に置換するとすれば次のようになる。
[shell]
>replace a.txt 恋 愛
[/shell]

 

みっちょ

SALON Doluce 代表。ハッカーでカウンセラー、占い師でカメラマン、その他あらゆる顔を持つ変な人。キッズプログラミング講師、パソコン修理、カウンセリングなど喜んで承ります。お気軽にお声掛けください!