ある変数Vの、先頭からm番目の文字からn文字分を取り出すには
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

ある変数Vの、先頭からm番目の文字からn文字分を取り出すには、「%V:~m,n%」とする(mは0から始まる)。例えば変数Vの値が「ABCDEFGHIJKL」の場合、6文字目から2文字分取り出すには「%V:~5,2%」とすればよい(先頭文字は0番目と数えるので、6ではなく5 を指定する)。
C:\>set V=ABCDEFGHIJKL
C:\>echo %V:~5,2%
FG
 nを省略すると、位置mから最後までとなる(例:%V:~5%なら「FGHIJKL」となる)。mに負の数を指定すると、先頭ではなく、最後尾から数えた文字位置になる(%V:~-3%ならば最後の3文字「JKL」になる)。またnに負の数を指定すると、最後のn文字を除いた部分の文字列となる(位置mからn文字目の直前まで。例えば%V:~5,-3%ならばFGHIとなる)。まとめると、次のようになる。
書式 意味 例
%V% 変数Vの値全体 %V% ⇒「ABCDEFGHIJKL」
%V:~m% m文字目から、最後まで %V:~5% ⇒「FGHIJKL」
%V:~m,n% m文字目から、n文字分 %V:~5,2% ⇒「FG」
%V:~m,-n% m文字目から、最後のn文字分を除いたもの %V:~5,-2% ⇒「FGHIJ」
%V:~-m% 後ろからm文字目から、最後まで %V:~-5% ⇒「HIJKL」
%V:~-m,n% 後ろからm文字目から、n文字分 %V:~-5,2% ⇒「HI」
%V:~-m,-n% 後ろからm文字目から、最後のn文字分を除いたもの %V:~-5,-2% ⇒「HIJ」
変数の部分文字列の抽出
変数の値全体を参照するには「%V%」とするが、変数名の修飾子として「:~<数字>」を付けることにより、文字列の一部分だけを取り出すことができる。ここではVの値は「ABCDEFGHIJKL」とする。修飾子の詳しい解説はコマンド・プロンプト上で「set /?」を実行すると表示される。