Windows-バッチ,ファイル内の文字列を指定した文字列に置換

スポンサーリンク

鍛錬 407

Windows-バッチ,ファイル内の文字列を、指定した文字列に置換する

ファイル内の文字列を、指定した文字列に置換するバッチファイルです。

スポンサーリンク

サンプルファイル

以下は、使用するサンプルファイル sample.txt です。

AAABBBCCC
XXXXXXXXX
AAABBBCCC
スポンサーリンク

バッチファイル

以下は、ファイル内の文字列を、指定した文字列に置換するバッチファイル、replace.bat です。

今回は、文字列 BBB を XXX に置換します。

@echo off

rem ファイル全体の setlocal
setlocal

rem 読み書きするファイル
set RW_FILE=sample.txt

rem tmpファイル
set TMP_FILE=tmp.txt

rem BBB を XXX に置換
set BEF_STR=BBB
set AFT_STR=XXX

rem tmpファイルが存在する場合は削除
if exist %TMP_FILE%	del %TMP_FILE%

rem 遅延環境変数の展開
setlocal enabledelayedexpansion

rem 1行ずつ読み込んで置換し,tmpファイルに書き込み
for /F "delims=" %%i in (%RW_FILE%) do (
	set read_str=%%i
	set write_str=!read_str:%BEF_STR%=%AFT_STR%!
	(echo !write_str!) >> %TMP_FILE%
)

rem 遅延環境変数の展開終了
endlocal

rem tmpファイルの内容を書き込み,tmpファイルを削除
copy %TMP_FILE% %RW_FILE% > nul
del %TMP_FILE%

rem ファイル全体の endlocal
endlocal

exit /b 0
スポンサーリンク

実行結果

以下は、次の順序で、ファイル sample.txt 内の文字列 BBB を XXX に置換しています。

  1. type コマンドで sample.txt の内容を表示 (置換前)
  2. バッチファイル replace.bat を実行し、BBB を XXX に置換
  3. type コマンドで sample.txt の内容を表示 (置換後)
D:\tmp>
D:\tmp>type sample.txt
AAABBBCCC
XXXXXXXXX
AAABBBCCC

D:\tmp>
D:\tmp>replace.bat

D:\tmp>
D:\tmp>type sample.txt
AAAXXXCCC
XXXXXXXXX
AAAXXXCCC

 
上記に示した通り、sample.txt 内の文字列 BBB を XXX に置換することができました。

タイトルとURLをコピーしました