バッチファイル

仕事で必要に迫られ、バッチファイルを作成していたんですが、現在実行中のバッチファイルがあるディレクトリを取得するには「%~dp0」という記述方法がある事を知りました。
以下のようなバッチファイルを作り、実行すると、バッチファイルのあるフォルダ名が表示されます。

@echo %~dp0

全然知りませんでした。
更に色々調べていくと、今日の文字列を得る簡単な方法があることを知りました。

●バッチ・ファイル中で日付をファイル名に使用する
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

バッチファイル内で今日の日付を得たい場合、大昔は

date < CR.TXT > today.txt

※CR.TXTは、改行コードのみが含まれたテキストファイル
みたいなことをやって、そこからawkなりsedなりで日付文字列を切り出す必要がありました。しかし、いつの頃からか

date /t

という、日付を表示して終了するオプションが追加になって、それをファイルに保存し、FOR構文による切り出しで日付文字列を取得出来るようになりました。
↓こんなバッチファイルを作って実行するわけです。

date /t > today.txt
FOR /F "tokens=1,2,3 delims=/(" %%i in (today.txt) do @echo %%i%%j%%k 

※この文字列をコマンドプロンプトに貼り付けて実行する場合は、「%%i」といった文字列を「%i」に変更して下さい。

ところが、こういうやり方↓があるそうです。

echo %date:~-10,4%%date:~-5,2%%date:~-2,2%

これだと、中間のバッチファイルが必要ないので美しいですよね(Y/n)?

いやー、こんな構文あるなんて全然知りませんでした。精進が足りないようです。