Windowsのバッチファイルに出てくる「%~dp0」の意味
Windowsで「.bat」といったバッチファイルを作成しようと思った初心者の方が他のユーザーが作成したバッチファイル参考にしようと思って見てみると、下記のような構文が付いていて疑問に思うことがあります。
@echo OFF cd /d %~dp0
cdはディレクトリの変更で、「/d」はDドライブへの変更を行っています。次の「%~dp0」が一体何なのか分からないというユーザーもいらっしゃるかと思います。
Windowsのバッチで「%0」「%1」「%2」といった%数字は引数を表しており、0は実行しているバッチファイル自体を表しています。「%1」「%2」はバッチの第一引数・第二引数です。
では、%と0に囲まれている「~dp」の部分はどういった意味なのかと言いますと、「~」はドライブやファイルパスから「"」を取り除きます。引数から”を取り除くことで純粋なパス文字列にすることができます。「dp」の部分は、文字列から何をどのように取得するのかのオプションです。
「d」はドライブ文字だけに展開する・「p」はファイル名を除いたパスの部分に展開するといった操作なので、「%~dp0」とは「実行されているファイルが置かれたディレクトリ」のことを指しています。ちなみに、実行ファイルのディレクトリに対する概念として「カレント」ディレクトリというものが存在しています。
オプション構文の一覧
- %~d0:%0をドライブ文字だけに展開する
- %~f0:%0を完全修飾パス名に展開する
- %~n0:%0をファイル名だけに展開する
- %~p0:%0をパス名だけに展開する
- %~x0:%0をファイル拡張子だけに展開する
- %~a0:%0をファイル属性に展開する
- %~t0:%0をファイルの日付/時刻に展開する
- %~z0:%0をファイルのサイズに展開する
- %~$PATH:0 :PATH環境変数に指定されているディレクトリを検索して最初に見つかった完全修飾名に%0を展開する
- %~s0:展開されたパスは短い名前だけを含む
- %~dp0:%0をドライブ文字とパスだけに展開する
- %~nx0:%0をファイル名と拡張子だけに展開する