バッチファイルで変数の一部を別の文字列に置換する(SET:=)

広告

バッチファイルで SET コマンドを使って変数に保存されている文字列の一部を別の文字列に置換することができます。ここでは、バッチファイルで変数の一部を別の文字列に置換するする方法について解説します。

文字列を置換する

変数に保存されている値の中の指定した部分を別の文字列に置換する場合、次のように SET コマンドを使用することができます。

SET 変数1=%変数名2:置換前=置換後%

このとき、変数2に保存されている値に対して、置換前と一致する部分を置換後の値に置き換えた値を変数1に保存することができます。(変数1と変数2は同じでも構いません)。なお置換前に指定した文字列と一致するかどうかは、大文字と小文字は区別されませんのでご注意ください。 "ABC" も "Abc" も "abc" と一致します。

変数に保存されている値が "ABCDEF" だった場合に、 "CD" を "123" に置き換えて同じ変数に保存しなおす場合は次のように記述します。

SET STR=ABCDEF
SET STR=%STR:CD=123%  // AB123EF

置換後の値を空文字にすることで、置換前の値を削除することもできます。変数に保存されている値が "ABCDEF" だった場合に、 "CD" を削除して同じ変数に保存しなおす場合は次のように記述します。

SET STR=ABCDEF
SET STR=%STR:CD=%  // ABEF

対象の値に置換前の値が複数個所で一致する場合、一致するすべての部分が置換されます。変数に保存されている値が "ABCBCA" だった場合に、 "BC" を "123" に置き換えて同じ変数に保存しなおす場合は次のように記述します。

SET STR=ABCBCA
SET STR=%STR:BC=123%  // A123123A

特別な文字 "*" を置換前の文字列の前に記述すると、先頭文字から特定の文字までも置換することができます。変数に保存されている値が "ABCBCA" だった場合に、先頭の文字から "C" までを "123" に置き換えて同じ変数に保存しなおす場合は次のように記述します。(特定の文字が一番最初に現れた部分までを置換します)。

SET STR=ABCBCA
SET STR=%STR:*C=123%  // 123BCA

では実際に試してみます。 SET コマンドを使って変数に保存されている値を別の文字列に置換してみます。

@echo off

SET STR=ABCDEF

SET SUBSTR=%STR%
echo %SUBSTR%

SET SUBSTR=%STR:CD=123%
echo %SUBSTR%

SET SUBSTR=%STR:CD=%
echo %SUBSTR%

SET SUBSTR=%STR:*C=123%
echo %SUBSTR%

バッチファイルを実行すると、次のように表示されます。

文字列を置換する(1)

変数に保存されている値の一部を別の文字列に置換することができました。

-- --

バッチファイルで変数の一部を別の文字列に置換するする方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。