2024年1月9日火曜日

バッチプログラムで上位ディレクトリの取得に地味にはまったので覚書

どうも皆様ぐーてんもるげん!そしてあけましておめでとうございます。
年末年始休暇を息子の発熱で潰した私です。

今回のネタはバッチプログラム。
ひょんなことから実行資産が格納されている上位ディレクトリのパスを取得したい!という事があり、私のアタマだと地味に試行錯誤するハメになったので、自分の備忘録も兼ねてメモを残しておくことにしました。
以下サンプルです。
@echo off

REM カレントディレクトリを保持
SET CAL_DIR=%~dp0

REM pushdコマンドで一時的にカレントディレクトリの上位ディレクトリに移動
pushd %CAL_DIR%..

REM pushdコマンドで移動したディレクトリの絶対パスを取得し、変数に格納
SET UPPER_DIR=%CD%

REM pushdコマンド発行前のディレクトリに戻る
popd

ECHO カレントディレクトリパス:%CAL_DIR%
ECHO 上位ディレクトリパス:%UPPER_DIR%


たったこれだけ。マジ??
今回登場したpushdコマンドとpopdコマンドについて調べてみたんですが、

・使い方はcdコマンドと同様、pushd 移動先で指定可能。今回の様に「..」とかもOK!
・実行すると指定されたディレクトリが「一時的な」カレントディレクトリと扱われる
・popdコマンドを使えば移動前のディレクトリに帰ってこれる
というものでした。ええ、便利!

年末年始の面白ネタは特にごじゃいません!またそのうち色々アップしようかと思います。
では、本年もこの頭のおかしい超絶低空飛行ブログをよろしくお願い致します!

0 件のコメント:

コメントを投稿