Windowsコマンドプロンプトでスクリプト格納場所の親ディレクトリの絶対パスを取得


概要

Windowsのコマンドプロンプトで、スクリプトのあるパスの親ディレクトリの絶対パスを取得したいことがあったので、自分用にメモ
(要はスクリプトの格納場所を基準にして、相対パスを絶対パスに変換したい)

実践

  • スクリプトの格納場所自体は例えばここなどを参考に%~dp0で取得可能
  • pushdpopdによるディレクトリ移動とcdコマンドによる絶対パスの取得を使うことで、スクリプトの場所からの相対パスを絶対パスに変換
get_parent.bat
@echo off
:: スクリプトのあるディレクトリの絶対パスを取得
set script_dir=%~dp0

:: 相対パスを使って一時的に移動(この場合は`%script_dir%`の親ディレクトリ)
pushd %script_dir%..

:: 現在のカレントパスがスクリプトの親ディレクトリ
set PARENT_PATH=%CD%

:: 元のパスに戻る
popd

:: %script_dir%は一時的な変数なので一応消去しておく
set script_dir=

@echo on
  • 上の例でcall path\to\get_parent.batのような感じでコマンドプロンプトで実行すると、スクリプト(batファイル)の親ディレクトリの絶対パスがPARENT_PATHに格納される

参考