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

文字列操作

※この記事は「2023年7月20日」に更新しました。

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

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

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

ぱそた
SE、Web制作、販売を経験した管理人が解説します。



文字列操作

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

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

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

最後に

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

バッチファイルでタイマーを作る

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

2019年8月9日

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

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

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

それでは、練習として date から取得した日付に対して、操作して文字列を整形していきましょう。

まずは、今日の日付を確認します。
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

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

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

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