バッチファイルの中で自分自身のバッチファイル名を取得する
例えば1つのバッチファイルをいくつかコピーして、内容を少しだけ修正したときとか、1つのログファイルに複数のバッチファイルがログをどんどん追記するときとか。
少し検索すると見つかりました。やはりあるんですね。
環境変数ではなく、特殊な引数として実装されているようです。
通常は、バッチファイル実行時に渡す引数の1番目、2番目を、そのバッチファイル内では%1、%2として利用します。
しかしゼロ番目の、つまり%0でバッチファイル名を取得できます。
バッチファイルのフルパス D:\Temp1\AAA.bat
バッチファイルの内容
@echo off pause title %0 echo %date% %time% %0 echo %date% %time% %0>>AAA.log pause |
このバッチファイルを実行してみると、
(写真1)実行直後、1つ目のpause
ウィンドウのタイトルが、C:\Windows\system32\cmd.exeとなっている。(規定値)
(写真2)バッチファイル名を取得した後の2つ目のpause
title %0でウィンドウのタイトルにバッチファイル名が表示されている。
echo %0で画面にもバッチファイル名が表示された。
標準出力にリダイレクトして、ログファイルにも書き込まれた。
ログライルの例(4回実行)
2012/06/12 11:45:43.52 "D:\Temp1\AAA.bat" 2012/06/12 11:48:06.01 "D:\Temp1\AAA.bat" 2012/06/12 11:49:04.96 "D:\Temp1\AAA.bat" 2012/06/12 11:55:12.70 "D:\Temp1\AAA.bat" |
こちらがヒントになりました。
http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.html
・バッチメモ(Hishidama's bat-file Memo)