【bat】文字列を置換する

bat内で文字列を置換する場合は以下の文法を使います。

%置換したい文字列をセットした変数名:置換対象文字列=置換後文字列%

使用例① 固定文字列を使用

BAT (Batchfile)
set text=ABCABC
echo %TEXT:B=X%

結果:AXCAXC

使用例② 文字列変数を使用

置換対象文字列、置換後文字列に変数を使う場合は、
call echo もしくは 遅延展開を使用する必要があります。

BAT (Batchfile)
set text=ABCABC
set Search=B
set Replace=X
call echo %%text:%search%=%Replace%%%
BAT (Batchfile)
set text=ABCABC
set Search=B
set Replace=X

setlocal enabledelayedexpansion
echo !text:%Search%=%Replace%!

結果:AXCAXC

また、以下のように変数に変数を指定することも可能です。
この場合も上記どちらかの記述で動作します。

set AA=ABCABC
set BB=B
set CC=X

set text=%AA%
set Search=%BB%
set Replace=%CC%

備考(変数の文字列をそのまま文字列として使う)

例えばWindows標準の変数環境「%userprofile%=C:\Users\ユーザー名」を、
%userprofile%に変換する場合は以下のように記述します。
変数でなく文字列として扱いたい場合は”%%変数名%%”と記載し、遅延展開を使用します。

BAT (Batchfile)
setlocal enabledelayedexpansion
set text=%*
set Search=%userprofile%
set Replace=%%userprofile%%

echo !text:%Search%=%Replace%!