Windowsバッチでカレントディレクトリのパスを取得する方法

Windowsバッチ(*.bat)でカレントディレクトリのファイルパスを取得する方法をまとめたので、ここにメモしておきます。

カレントディレクトリとは、実行中のプログラムのファイルが現在存在しいてるフォルダのことで、Windowsバッチなら実行しているバッチファイル(*.bat)がおかれているフォルダのことを意味しています。

 

カレントディレクトリを取得する

カレントディレクトリを取得する方法はいくつか存在し、どれもとても簡単い取得することが可能です。

C:\sample\bat\folder\CurrentDirectory1.bat

@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

結果

%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

@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

結果

%CD%: C:\sample\bat\folder
%~dp0: C:\sample\bat\folder\
==================
C:\sample\bat\folder

For文を使って、CDコマンドからカレントディレクトリを取得する方法もあります。(サンプル、代入②)

 

以上です。

 

 



投稿日:2020-07-27    更新日:2020-07-27

[スポンサーリンク]

サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]