仕事で必要に迫られ、バッチファイルを作成していたんですが、現在実行中のバッチファイルがあるディレクトリを取得するには「%~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)?
いやー、こんな構文あるなんて全然知りませんでした。精進が足りないようです。