バッチファイルのfor文

コマンドプロンプトというシェル(?)は奥が深い。と思った。パイプ指向の*nix文化とは全然違う。
単純な日付ならdate /tで得られる。しかし、ここで得られる値はyyyy/mm/ddというファイル名の一部としては使い難い。フォーマットしたいときfor文を使う。

@echo off
for /F "tokens=1,2,3 delims=/" %%i in ('date /t') do set DATE=%%i%%j%%k
echo %DATE%

ってやると日付がyyyymmddの形式で出力される。
しかし、%%j,%%kは何処から出てくるのやら...という疑問が湧かないでもない。ヘルプ*1を見てみると、どうもa-zA-Zまでの52変数までは取れるらしい。使い切る事はまずないと思うが、何とも微妙な限界値。

()内はファイル内の各行も扱えるので、バッチファイルを作成する上でfor文は一種鍵となりそうだ。

*1:for /? で見られる。一度見てみると良いかも