※この記事は「2023年7月20日」に更新しました。
コマンドプロンプト講座です。
今回の内容は、文字列操作について。
例えば、今日の日付をファイル名の先頭に加えて、コピーするといったバッチファイルを作成するときには有効です。
文字列操作
まず、文字列操作をするためには、変数(環境変数)に代入する必要があります。
適当に以下のような変数を設定します。
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 のような役割です。
コマンドプロンプトで使いそうな場面としては、バッチファイルで日付を入れたりするようなときです。
冒頭でも軽く紹介しましたが、ファイル名の先頭に日付を加えたりするときにも使えます。
それでは、練習として 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
20191129
ちゃんと /(スラッシュ)が取り除かれたものが表示されるはずです。
最近だとバックアップも進化しているのでファイル名に日付をつける機会もあまりないかもしれません。
しかし、こだわりがある場合、覚えておいて損はないかと思います。