読者です 読者をやめる 読者になる 読者になる

「%~dp0」でカレントディレクトリが取得できる訳

cmd

「%~dp0」ってどうしてカレントディレクトリとれるんだろって思っていたらこんなのみつけた。

実行ファイルと同一のホルダに設定ファイルなどを置くことって多いですよね。作業ホルダにしたいこともあります。そうすると、起動したバッチファイルが置かれているホルダが取得したい訳ですよね。
%0 には、起動されたバッチファイルのフルパスが格納されていますから、これのドライブ名と、ファイル名を除くパスの部分を取り出せばいいですよね。
ズバリ、このように展開するように指定しているのです。~ (チルダ) を付けて ~d でドライブ名に展開せよっていうこと。~p でファイル名を除くパスの部分に展開せよっていうこと。合わせて ~dp でドライブ名とファイル名を除くパスの部分に展開せよってことなんだ。0 の意味は解かるよね。
簡単に取り出せる記述だから、%~dp0 はよく使うし、ひょっとしたら細かい説明をしているものが少ないのかなぁ〜

パスにスペースが含まれているとイタズラするので " (ダブルクォート) で囲みますよね。今度はこのダブルクォートがイタズラするんですね。
例えば、%1 に受け取ったホルダ名をそのまま使用するには問題ありませんが、ファイル名を付加するとどうなるかって〜と、%1 を "c:\・・・\・・・\" で受け取ったとして
  %1FileName → "c:\・・・\・・・\"FileName
になっちゃいます。ダブルクォートが邪魔ですよね。コレを除いて展開する指定が ~ (チルダ) なんです。
  %~1FileName → c:\・・・\・・・\FileName
になってくれますよ。

http://tenukipg.seesaa.net/article/10084212.html
広告を非表示にする