Windowsのバッチコマンドで文字列の部分参照(切り出し)を行う方法

2023年4月17日

Windowsのバッチ処理って意外とプログラム言語っぽい処理ができたりするんです。
今回はバッチ処理で文字列の中から決められた位置の文字を取り出したい部分参照です。覚えておくと便利な方法です。

目次

1.部分参照の書き方

変数に文字列をセットするのはSET文で行います。
例えば、変数「NAME」に文字列「YAMADATAROU」をセットするには
SET NAME=YAMADATAROU
と記述します。

この「NAME」にセットされた文字列のうち「YAMADA」つまり1文字目から6文字を取り出して「NAME2」にセットするには
どうすればいいでしょうか?

答えは、部分参照を使って記述します。
部分参照は「:~[開始位置],[文字列長]」で記述します。
「コロン チルダ 開始 カンマ 長さ」で覚えてください。
ちなみに開始位置は左端を0として始まります。
開始位置にマイナスをつけると右端からの位置になります。この場合右端の位置は1になります。

という事で先ほどの問題の答えは
SET NAME2=%NAME:~0,6%
となります。

以下をバッチファイルにするかコマンドプロンプトに貼り付けて実行してみてください。

SET NAME=YAMADATAROU
SET NAME2=%NAME:~0,6%
ECHO %NAME2%

最後にYAMADAと表示されたと思います。

この書き方が理解できれば様々な応用が利くと思います。

スポンサードサーチ

2.部分参照のバリエーション

部分参照の記述方法は以下のようにバリエーションがあります。
S:開始位置
L:長さ
S:文字列

NAMEには「YAMADATAROU」とセットされているとします。

部分参照 説明 サンプル サンプル結果
%変数:~開始位置,長さ% 開始位置から長さ分の文字列 %NAME:~2,3% MAD
%変数:~開始位置% 開始位置から右端までの文字列 %NAME:~5% ATAROU
%変数:~,長さ% 先頭から長さ分の文字列 %NAME:~,3% YAM
%変数:~開始位置,-長さ% 開始位置から右端から長さ分を除いた文字列 %NAME:~2,-3% MADATA
%変数:~,-長さ% 先頭から始まり右端から長さ分を除いた文字列 %NAME:~,-3% YAMADATA
%変数:~-開始位置,-長さ% 右端からの開始位置から右端からの長さ分除いた文字列 %NAME:~-6,-3% ATA
%変数:~-開始位置% 右からの開始位置から右端までの文字列 %NAME:~-4% AROU