バッチファイルの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 /? で見られる。一度見てみると良いかも