概要
Windowsのコマンドプロンプトで、スクリプトのあるパスの親ディレクトリの絶対パスを取得したいことがあったので、自分用にメモ
(要はスクリプトの格納場所を基準にして、相対パスを絶対パスに変換したい)
実践
- スクリプトの格納場所自体は例えばここなどを参考に
%~dp0
で取得可能 -
pushd
とpopd
によるディレクトリ移動と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
に格納される