カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用) - MS-DOS コマンド

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

概要

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

書式

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

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

記述例

pushd C:\data
popd

例1: 単純な例

コマンドプロンプトを表示します。 C:\develop にカレントディレクトリを変更します。・


次のコマンドを実行します。
pushd C:\windows


コマンドを実行すると、カレントディレクトリが、C:\windows になります。


続いて以下のコマンドを実行します。
pushd system32


コマンドを実行するとカレントディレクトリが、 C:\widows\system32 に変わります。


popd コマンドを実行します。
popd


コマンドを実行すると、変更前のカレントディレクトリ、 C:\widows に戻れます。


もう一度popd コマンドを実行します。
popd


コマンドを実行すると、最初のカレントディレクトリ C:\delvelop に戻ります。

例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 ディレクトリを作成します。


サブディレクトリ内はいずれのディレクトリも空にします。


バッチファイルを実行します。



バッチファイルを配置したディレクトリは変化はありません。


サブディレクトリ内には、それぞれのディレクトリに info.txt ファイルが作成されています。

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

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

カレントディレクトリが c:\develop の状態で下記コマンドを実行します。
pushd .


カレントディレクトリがディレクトリスタックにプッシュされます。


カレントディレクトリを変更しますが、pushdコマンドではなくcdコマンドで変更します。
cd c:\storeda\data


カレントディレクトリが変更できました。popdコマンドを実行します。
popd


cd コマンドでカレントディレクトリを変更しましたが、popdコマンドで前のディレクトリに戻れます。


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