「%~dp0」を理解すれば、Windowsバッチ中でディレクトリ名やファイル名を自由に使えるから便利

Windowsバッチを作成する際、もしくは、他の人が作ったWindowsバッチでよく出てくるのが、「%~dp0」みたいな記述。

「%」とか「~」沢山あって、何がなんだか分からない~!と毎回調べることになるので、ここにまとめておきます。

ちなみに、分からなくなったら、コマンドプロンプトを開いて、「help for」と打ってReturnすると、ヘルプメッセージが表示されるので、大体は確認できます。

さて、最初に、「%~dp0」を読み解くことにしましょう。

 

そもそも、Windowバッチでは、「%0」や「%1」など、「%数字」は、引数を表し、「0」は特別に、そのバッチファイル自身、それ以降は第一引数、第二引数となります

バッチ名が「TEST_MAIN.bat」だった場合、

「TEST_MAIN.bat aaa bbb」を実行すると、

 

D:\MyDownload\script\TEST_MAIN.bat
aaa
bbb

 

のように表示されることになります。

で、

のように「%」と「数字(たとえば0)」の間にある「~」や「d」が、それらをどのように加工して取り出すかのオプションになります。加工して取り出すことを、プログラムの世界では「展開する」といいます。

「~」・・・これは、ドライブ、ファイルパスから「”」を取り除きます。Windowsでは、「Program Files」のように、スペースを含んだパスも良く使われますので、これを引数に渡すときに「”C:\Program Files\Java”」のように囲ったりします。この「”」を取り除き、純粋なパス文字列にするのに必要になります。

それ以外の「d」や「p」などのオプションは、ドライブやファイル名の含まれた文字列から、何を取り出すかの指定を行います。

具体的には、下記のような情報を取り出すことが可能で、複数組み合わせることも出来ます。

%~d0 %0をドライブ文字だけに展開
%~p0 %0をパス名だけに展開
%~n0 %0をファイル名だけに展開
%~x0 %0をファイル拡張子だけに展開
%~dp0 %0をドライブ文字とパスだけに展開
%~nx0 %0をファイル名と拡張子だけに展開

 

組み合わせた場合

%~dp0 %0をドライブ文字とパスだけに展開します。
%~nxI0 %0をファイル名と拡張子だけに展開します。
%~fs0 %0を完全なパスと短い名前だけに展開します。

 



こんな記事も関係あるかも。読んでみてね。

コメントを残す

サブコンテンツ

このページの先頭へ