dateやtime変数から、数字の部分だけを取り出すには、単に「%date%」「%time%」とするのではなく、変数値の部分文字列抽出用の修飾を行えばよい。ある変数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 /?」を実行すると表示される。
この結果、%date%変数から数字の部分だけを抜き出すには、「%date:~0,4date:~5,2date:~8,2%」とすればよいことが分かるだろう(年と月と日の部分をそれぞれ抜き出して結合している)。
C:\>echo %date% 2004/04/28
C:\>echo %date:~0,4date:~5,2date:~8,2%
20040428