カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用)

カレントディレクトリを変更後に元のディレクトリに戻るコマンドを紹介します。

概要

バッチファイルなどでカレントディレクトリを変更後に処理を実行し、元のディレクトリに戻りたい場合があります。 絶対パスで指定できる場合は問題ありませんが、相対ディレクトリで実行している場合は、元のディレクトリのパスがわからないため、 別の方法で戻る必要があります。この記事では、pushd, popd コマンドを利用して元のディレクトリに戻るコマンドを紹介します。

書式

以下の書式を利用します。
現在のディレクトリを記録して、カレントディレクトリを変更する。
pushd (パス)

元のディレクトリに戻る。
popd

記述例

pushd C:\data
popd

例1: 単純な例

コマンドプロンプトを表示します。 C:\develop にカレントディレクトリを変更します。・
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像1

次のコマンドを実行します。
pushd C:\windows
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像2

コマンドを実行すると、カレントディレクトリが、C:\windows になります。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像3

続いて以下のコマンドを実行します。
pushd system32
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像4

コマンドを実行するとカレントディレクトリが、 C:\widows\system32 に変わります。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像5

popd コマンドを実行します。
popd
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像6

コマンドを実行すると、変更前のカレントディレクトリ、 C:\widows に戻れます。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像7

もう一度popd コマンドを実行します。
popd
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像8

コマンドを実行すると、最初のカレントディレクトリ C:\delvelop に戻ります。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像9

例2: FORループと組み合わせる例

以下のバッチファイルを作成します。

コード

@ECHO OFF

FOR /D %%n IN (*) DO (
  ECHO %%n にカレントディレクトリを変更します 
  PUSHD %%n
  ECHO New File > info.txt
  POPD
)

ECHO 処理が終了しました。

解説

カレントディレクトリでのディレクトリに対してループ処理を実行します。詳しくはこちらの記事を参照してください。
FOR /D %%n IN (*) DO (
 ....
)

PUSHDコマンドでカレントディレクトリをサブディレクトリに変更します。
  ECHO %%n にカレントディレクトリを変更します 
  PUSHD %%n

"New File"の文字列を書き込んだinfo.txtファイルを作成します。
  ECHO New File > info.txt

POPDコマンドで元のディレクトリに戻ります。
  POPD

バッチファイルを実行すると、各サブフォルダに "info.txt"ファイルを作成します。

実行結果

ディレクトリを準備します。バッチファイルを配置したディレクトリに、main, sub1, sub2 ディレクトリを作成します。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像10

サブディレクトリ内はいずれのディレクトリも空にします。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像11

バッチファイルを実行します。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像12
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像13

バッチファイルを配置したディレクトリは変化はありません。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像14

サブディレクトリ内には、それぞれのディレクトリに info.txt ファイルが作成されています。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像15

例3: cdコマンドでカレントディレクトリを変更したい場合に前のディレクトリに戻る

pushd . コマンドを実行するとカレントディレクトリのパスをプッシュできます。

カレントディレクトリが c:\develop の状態で下記コマンドを実行します。
pushd .
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像16

カレントディレクトリがディレクトリスタックにプッシュされます。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像17

カレントディレクトリを変更しますが、pushdコマンドではなくcdコマンドで変更します。
cd c:\storeda\data
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像18

カレントディレクトリが変更できました。popdコマンドを実行します。
popd
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像19

cd コマンドでカレントディレクトリを変更しましたが、popdコマンドで前のディレクトリに戻れます。
カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用):画像20

pushd, popd コマンドを利用してカレントディレクトリを変更後に元のディレクトリに戻る操作ができました。
AuthorPortraitAlt
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
作成日: 2023-03-21
Copyright © 1995–2025 iPentec all rights reserverd.