バッチファイルで実行中のパスを知る方法

バッチファイル処理の中で、バッチファイルのあるフォルダを知る方法を調べました。

スポンサーリンク

おまじない「%~dp0」

答えは「%~dp0」が、バッチファイルを実行しているフォルダを示します。

以上で解決!
なのですが、これだけだと味気ないので、それぞれの意味を解説しておきます。

%~dp0を分解すると、

%0
~
d
p

の4つになります。

順番が逆のように思えますが、「%0」に「~」「d」「p」の3つのオプションが付いていることを示します。
それぞれの意味は以下の通りです。

%0実行したバッチファイルに渡す引数です
%と数字で複数の引数を指定できます
%0は特殊で実行するバッチファイルそのものをファイルパスで示します
~ファイルパスから「”」(ダブルコーテーション)を省きます
dファイルパスからドライブ文字を取得します
pファイルパスからパス名を取得します

これを踏まえて「%~dp0」を見てみましょう。

%0で示すファイルパスに対して

  1. 「~」で「”」を省く
  2. 「d」でドライブ文字を取得
  3. 「p」でパスを取得

となります。

つまり、バッチファイルのファイルパスが「”C:\Hoge Hoge\test.bat”」の場合、「C:\Hoge Hoge」という文字列に変換されます。
これが、バッチファイルの実行しているフォルダということになります。

バッチファイルと同じフォルダにコピーしたいファイルがある場合などに、このおまじないを使えば確実に目的のファイル場所が分かるので知っておいて損はないと思います。

ちなみに先ほどのパラメータについては他にもこんな指定が可能です。

f完全なファイルパスを取得します
nファイルパスからファイル名を取得します
xファイルパスから拡張子を取得します
s短い名前のパスを取得します
aファイル属性を取得します
tファイルの日付/時間を取得します
zファイルのサイズを取得します
PC関連
スポンサーリンク
スポンサーリンク
スポンサーリンク
カミヒロをフォローする
新・かみひろぐ

コメント

タイトルとURLをコピーしました