バッチファイル処理の中で、バッチファイルのあるフォルダを知る方法を調べました。
おまじない「%~dp0」
答えは「%~dp0」が、バッチファイルを実行しているフォルダを示します。
以上で解決!
なのですが、これだけだと味気ないので、それぞれの意味を解説しておきます。
%~dp0を分解すると、
%0
~
d
p
の4つになります。
順番が逆のように思えますが、「%0」に「~」「d」「p」の3つのオプションが付いていることを示します。
それぞれの意味は以下の通りです。
%0 | 実行したバッチファイルに渡す引数です %と数字で複数の引数を指定できます %0は特殊で実行するバッチファイルそのものをファイルパスで示します |
~ | ファイルパスから「”」(ダブルコーテーション)を省きます |
d | ファイルパスからドライブ文字を取得します |
p | ファイルパスからパス名を取得します |
これを踏まえて「%~dp0」を見てみましょう。
%0で示すファイルパスに対して
- 「~」で「”」を省く
- 「d」でドライブ文字を取得
- 「p」でパスを取得
となります。
つまり、バッチファイルのファイルパスが「”C:\Hoge Hoge\test.bat”」の場合、「C:\Hoge Hoge」という文字列に変換されます。
これが、バッチファイルの実行しているフォルダということになります。
バッチファイルと同じフォルダにコピーしたいファイルがある場合などに、このおまじないを使えば確実に目的のファイル場所が分かるので知っておいて損はないと思います。
ちなみに先ほどのパラメータについては他にもこんな指定が可能です。
f | 完全なファイルパスを取得します |
n | ファイルパスからファイル名を取得します |
x | ファイルパスから拡張子を取得します |
s | 短い名前のパスを取得します |
a | ファイル属性を取得します |
t | ファイルの日付/時間を取得します |
z | ファイルのサイズを取得します |
コメント