バッチファイル | 一行または複数行のテキストから文字列を置き換える方法

バッチファイル 基本,コマンドプロンプト

バッチファイル | 一行または複数行のテキストから文字列を置き換える方法

バッチファイルで文章から文字列を置き換える方法について紹介しています。

一行のテキストから文字列を置き換える

対象のテキストが一行の場合は、以下の方法で文字列の置き換えが可能となっています。

@echo off
chcp 65001

setlocal enabledelayedexpansion

set "text=今夜は妙なきぶんだ"
set "old_str=きぶん"
set "new_str=気分"

set "result=!text:%old_str%=%new_str%!"
echo !result!

endlocal

pause

ファイル内のテキストから文字列を置き換える

ファイル内にある複数行のテキストから特定の文字列を置き換えるには、行毎に処理をしていきます。

@echo off
chcp 65001

setlocal enabledelayedexpansion

set "target_file_path=ファイルへのパス"
set "old_str=きぶん"
set "new_str=気分"

if exist "%target_file_path%" (
    for /f "usebackq delims=" %%a in ("%target_file_path%") do (
        set "line=%%a"
        set "result=!line:%old_str%=%new_str%!"
        echo !result!
    )
) else (
    echo ファイルが存在しませんでした。
)

endlocal

pause
テキストファイルの文字列を置き換えた結果
テキストファイルの文字列を置き換えた結果

置き換えたテキストデータを新しいファイルに保存する場合は以下のように記述できます。

@echo off
chcp 65001

setlocal enabledelayedexpansion

set "target_file_path=置き換え前のファイルへのパス"
set "output_file_path=置き換え後のファイルへのパス"
set "old_str=きぶん"
set "new_str=気分"

if exist "%target_file_path%" (
    for /f "usebackq delims=" %%a in ("%target_file_path%") do (
        set "line=%%a"
        set "result=!line:%old_str%=%new_str%!"
        echo !result!>> "%output_file_path%"
    )
) else (
    echo ファイルが存在しませんでした。
)

endlocal

pause