Windowsのコマンドプロンプトやバッチ内で文字列置換を簡単な記述で行う

Windowsのバッチ内などで、文字列の置換を行いたい場合があります。

よく使うのは、現在日付や時間を取得して、そのスラッシュ(/)などを置換し、「YYYYMMDD」形式の文字列にして、ファイル名などに利用するシーンでしょうか。

このような場合、%date%で取得した文字列の何番目から何番目を取って。。。という風に加工してもよいですが、文字列置換の方法を使うと記述がすっきりします。

文字列の置換は以下のような構文で可能です。

実際の例を見てみましょう。

batの文字列置換の基本的な構文

基本的な構文は、

%[元の文字列]:[置き換え前の文字列]=[置き換え後の文字列]%

のようになります。

%[元の文字列]:/=%」のように、

[置き換え前の文字列]をスラッシュ、[置き換え後の文字列]をにしておくと、

YYYY/MM/DD ⇒ YYYYMMDD

に変換することができますね。

コピペで使える文字列置換のサンプルソース

@echo off

set dateStr=%date%
set timeStr=%time%

echo %dateStr%
echo %timeStr%

set formtDateStr=%dateStr:/=_%
set formtTimeStr=%timeStr::=%

echo %formtDateStr%
echo %formtTimeStr%

上記が、具体的な記述方法になります。

実行すると、

のようになりますね。