Windowsバッチ(*.bat)でカレントディレクトリのファイルパスを取得する方法をまとめたので、ここにメモしておきます。
カレントディレクトリとは「実行ファイルが存在するディレクトリ」のことで、Windowsバッチなら実行対象のバッチファイル(*.bat)が置かれているフォルダのことを意味しています。
目次[表示]
カレントディレクトリを取得する
カレントディレクトリを取得する方法はいくつか存在し、どの方法もとても簡単に取得することが可能です。
C:\sample\bat\folder\CurrentDirectory1.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @echo off rem カレントディレクトリの取得 rem 取得方法① echo %%CD%%: %CD% echo ================== rem 取得方法② echo %%~dp0: %~dp0 echo ---- echo %%0: %0 echo %%~0: %~0 echo %%~p0: %~p0 echo %%~d0: %~d0 pause >nul |
結果
1 2 3 4 5 6 7 8 | %CD%: C:\sample\bat\folder ================== %~dp0: C:\sample\bat\folder\ ---- %0: "C:\sample\bat\folder\CurrentDirectory1.bat" %~0: C:\sample\bat\folder\CurrentDirectory1.bat %~p0: \sample\bat\folder\ %~d0: C: |
「%CD%」と「%~dp0」の2つの方法で取得することが可能です。両者の違いとしては、「%~dp0」の方は最後に「\」が付くくらいで、後は全く同じです。
「%CD%」は現在いるファイルパス+ファイル名を文字列として保持している環境変数です。
「%~dp0」を細かく分解すると以下の通りになります。
- 「%0」:ダブルクォーテーションに囲まれた形でカレントディレクトリ+ファイル名を取得
- 「%~0」:「~」を入れることで、最初と最後のダブルクォーテーションを削除
- 「%~p0」:ドライブ名とファイル名と抜いたファイルパスを取得
- 「%~0d」:ドライブ名のみ取得
カレントディレクトリを変数に代入する
カレントディレクトリを変数に代入する際は、通常の値を代入する時と同じ方法で行います。
C:\sample\bat\folder\CurrentDirectory2.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @echo off rem 代入① set CURRENT_DIRECTORY1=%CD% set CURRENT_DIRECTORY2=%~dp0 echo %%CD%%: %CURRENT_DIRECTORY1% echo %%~dp0: %CURRENT_DIRECTORY2% echo ================== rem 代入② for /f "usebackq" %%i in (`CD`) do (echo %%i) pause >nul |
結果
1 2 3 4 | %CD%: C:\sample\bat\folder %~dp0: C:\sample\bat\folder\ ================== C:\sample\bat\folder |
For文を使って、CDコマンドからカレントディレクトリを取得する方法もあります。(サンプル、代入②)
以上です。