【Windowsバッチファイル(.bat)】実行したバッチファイルがあるパスを取得する


この記事はプロモーションを含みます。

Windows

ホーム > コマンドプロンプト・バッチファイル リファレンス

Windowsバッチファイルで、実行したバッチが格納されているフォルダのパスを取得する方法を解説します。

ソースコード

以下がサンプルのソースコードになります。
赤色文字の「%~dp0」が、パスを取得する部分になります。

バッチは下記に格納しています。
C:\workspace\WinBat\GetExecBatPath.bat

@echo off

echo %~dp0

pause

サンプルの実行結果です。
実行したバッチを格納しているパスが取得されました。

C:\workspace\WinBat\
続行するには何かキーを押してください . . .

部品化したバッチで取得した場合の挙動

別々のフォルダに格納した、あるバッチから呼び出されたバッチでパスを取得した場合、どちらのバッチのパスが取得されるのか確認してみます。

バッチの構成

C:\workspace\WinBat\folder_A\parent.bat ← 実行するバッチ

C:\workspace\WinBat\folder_B\child.bat ← [parent.bat]から呼び出されるバッチ(このバッチでパスを取得する)

各バッチのソースコードになります。

parent.bat
@echo off

call ..\folder_B\child.bat

pause
child.bat
@echo off

echo %~dp0

実行結果になります。
パスに[folder_B]が含まれているので、[child.bat]の格納パスが取得されていることが分かります。

C:\workspace\WinBat\folder_B\
続行するには何かキーを押してください . . .

まとめになります。

呼び出し先のバッチで、パスを取得した場合は呼び出し先のバッチのパスが取得されることが分かりました。

コメント

タイトルとURLをコピーしました