目次
自分自身のパスを取得する
実行しているバッチファイルが置いてあるフォルダ(ディレクトリ)のパスを取得するには、「%~dp0」を用います。以下、「echo」コマンドで「%~dp0」の中身を確認するバッチファイル(check_dp0.bat)です。
1 2 3 |
@echo off echo %~dp0 |
以下、実行結果です。
これを使用すれば、バッチファイルがあるフォルダに移動したい場合は、バッチファイルに、
1 |
cd %~dp0 |
と記述するだけでよいので、バッチファイル内であちこちフォルダを移動した後、元の場所に戻りたいときによく使用します。
少し詳しい解説
「%~dp0」について少し詳しく説明します。「%~dp0」は引数「%~0」にオプションの「d」と「p」がくっ付いたものになります。「%~0」単独では、バッチファイル名を出力します。
バッチファイル(check_0.bat)を作り、以下のコマンドを書き込んで、実行してみましょう。
1 2 3 |
@echo off echo %~0 |
バッチファイル名が出力されました。
そして「%~0」に「d」を付けて「%~d0」にすると、このバッチファイルが存在するドライブ名を出力します。上記のバッチファイル「check_0.bat」に一行追加して実行してみましょう。
1 2 3 4 |
@echo off echo %~0 echo %~d0 |
二つ目の「echo」コマンドでドライブ名の「C:」が出力されました。
一方、「p」を付けて、「%~p0」にするとバッチファイルが存在するフォルダ(ディレクトリ)名を出力します。このとき、ドライブ名は出力されません。
1 2 3 4 5 |
@echo off echo %~0 echo %~d0 echo %~p0 |
したがって、「d」と「p」を両方付けて、「%~dp0」とすることで、「ドライブ名」と「フォルダ名」が両方出力され、バッチファイル自身が存在するフォルダ(ディレクトリ)のパスとなるのです。
1 2 3 4 5 6 |
@echo off echo %~0 echo %~d0 echo %~p0 echo %~dp0 |
このように、「%0」や「%1~9」には「%」と「数字」の間にオプションとしてアルファベットを挿入することで様々な表示を行えるようになっています。詳しく知りたい方は、「パス名の文字列を自在に切り取る -やりたいことから検索-」をご覧下さい。