【コマンドプロンプト講座】文字列操作

文字列操作

コマンドプロンプト講座です。

前回はバッチファイルでタイマーを作る方法を紹介しました。

【コマンドプロンプト講座】バッチファイルでタイマーを作る

2019.08.09

今回の内容は文字列操作について。

例えば、今日の日付をファイル名の先頭に加えて、コピーするといったバッチファイルを作成するときには有効です。

それでは、見ていきましょう。



文字列操作

まず、文字列操作をするためには、変数(環境変数)に代入する必要があります。

適当に以下のような変数を設定します。

set V=ABCDEFGHIJK

この変数を使って、色々試していきます。

先頭から数えて文字列を取得する

それでは、先頭から数えて文字列を取得してみます。

echo %V:~3,2%

これは、先頭から数えて、4文字目から2文字分を抽出して表示させるコマンドです。

ちなみに4文字目となっている理由は先頭の文字(1文字目)を0番目としているからです。

つまり、結果は以下のようになります。

DE

ちなみに4文字目から最後まで抽出する場合は以下のようなコマンドになります。

echo %V:~3%

結果は以下の通りです。

DEFGHIJK

末尾から数えて文字列を取得する

末尾から数えて文字列を取得することも可能です。

echo %V:~-3,2%

この場合、末尾から数えて、3文字目から2文字分を抽出して表示させます。

結果は以下の通りです。

IJ

同様に末尾から数えて、3文字目から最後まで抽出する場合は以下のコマンドになります。

echo %V:~-3%

結果は以下の通りです。

IJK

最後に

いかがでしょうか。

今回の内容は、他のプログラミング言語でいうと substr のような役割です。

コマンドプロンプトで使いそうな場面としては、バッチファイルで日付を入れたりするようなときです。

冒頭でも軽く紹介しましたが、ファイル名の先頭に日付を加えたりするときにも使えます。

実際にやってみましょう。

まずは、今日の日付を確認します。

echo %date%

すると下記のように表示されます。

2019/11/29

これを扱いたいわけですが、/(スラッシュ)が邪魔だったりします。

そこで、年、月、日、それぞれを抽出していきます。

set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%

あとは、抽出したものを連結させましょう。

set mydate=%year%%month%%day%

というわけで、以下のバッチファイルを作成しました(sample.bat)。

@echo off

set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%

set mydate=%year%%month%%day%

echo %mydate%

pause

実行結果は以下の通りです(2019年11月29日に実行しました)。

20191129

ちゃんと /(スラッシュ)が取り除かれたものが表示されるはずです。

最近だとバックアップも進化しているのでファイル名に日付をつける機会もあまりないかもしれません。

しかし、こだわりがある場合、覚えておいて損はないかと思います。