pushd, popd

にメンテナンス済み
目次

cd でフォルダを移動すると、「さっきいたフォルダ」を自分で覚えておかなければ戻れません。

pushd は現在のフォルダを記憶してから移動し、popd は記憶したフォルダへ戻るコマンドです。一時的に別のフォルダで作業して、終わったら元の場所へ戻りたいときに便利です。

基本構文

構文
pushd フォルダのパス
popd
  • pushd: 現在のフォルダを記憶し、指定したフォルダへ移動します。
  • popd: 最後に記憶したフォルダへ戻ります。

基本的な使い方

pushd C:\Windows\System32
popd
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>cd
C:\Users\sample
C:\users\user>
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>pushd C:\Windows\System32
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>cd
C:\Windows\System32
C:\users\user>
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>popd
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>cd
C:\Users\sample
C:\users\user>

popd を実行すると、pushd する前にいた C:\Users\sample に戻ります。

cd との違い

cd は別のドライブへ移動するときに /d が必要ですが、pushd はドライブが違っていてもそのまま移動できます。移動前のフォルダを記憶してくれる点も cd との大きな違いです。

記憶したフォルダはスタックに積まれる

pushd で記憶したフォルダは、スタック(積み重ねた置き場)に保存されます。後から記憶したものが上に載り、popd は一番上から順に取り出します。

3回続けて移動
pushd C:\Windows
pushd C:\Users
pushd D:\work

この状態で popd を実行するたびに、記憶したフォルダを新しい順にさかのぼって戻ります。

  1. 1 回目の popd: C:\Users に戻る
  2. 2 回目の popd: C:\Windows に戻る
  3. 3 回目の popd: 最初にいたフォルダに戻る

スタックの中身を確認する

引数なしで pushd を実行すると、記憶しているフォルダの一覧が表示されます。コマンド拡張が有効な通常の環境で使えます。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>pushd
C:\Users
C:\Windows
C:\Users\sample
C:\users\user>

上の行ほど、次の popd で戻る場所に近い(新しく記憶した)フォルダです。

ネットワークパス(UNC)に移動する

cd ではネットワーク上の \\server\share のようなパスへ移動できません。pushd なら、空いているドライブ文字が自動的に割り当てられて移動できます。

共有フォルダで作業して戻る
pushd "\\server\share\work"
dir
popd

割り当てられるドライブ文字は、Z: から順にさかのぼって空いているものが使われます。popd で元のフォルダに戻ると、割り当てられたドライブも解除されます。

共有フォルダのバッチファイルを実行するとき

UNC パス上のバッチファイルをそのまま実行すると、カレントディレクトリに UNC パスを設定できず、警告が表示されることがあります。バッチファイルの先頭に pushd "%~dp0" を書くと、バッチファイルの置き場所に移動してから処理を始められます。

バッチファイルで使う

バッチファイルの中で別のフォルダの処理をするときは、pushd と popd で挟むと、処理の前後でカレントディレクトリが変わらずに済みます。

backup.cmd
@echo off

pushd "%~dp0"
echo バッチファイルのあるフォルダ: %cd%

pushd "C:\data"
if not exist "%~dp0backup" mkdir "%~dp0backup"
copy *.txt "%~dp0backup\"
popd

echo バッチファイルのフォルダに戻りました: %cd%
popd

%~dp0 はバッチファイル自身のあるフォルダを表します。詳しくは

を参照してください。

popd の書き忘れに注意

pushd の回数と popd の回数がずれると、バッチファイルの終了後も別のフォルダに居続けることがあります。pushd と popd は必ず対にして使いましょう。

存在しないフォルダを指定したとき

存在しないフォルダを pushd に指定すると、エラーメッセージが表示されて移動は行われません。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>pushd C:\nothing
指定されたパスが見つかりません。
C:\users\user>

移動に失敗したあとに popd を実行すると、それ以前に記憶していたフォルダへ戻ってしまいます。バッチファイルでは、|| で失敗時の処理を分けておくと安全です。

移動に失敗したら中断する
pushd "C:\data" || exit /b 1
rem ここに処理を書く
popd

|| の使い方は

を参照してください。

PowerShell の場合

PowerShell では pushd と popd が、それぞれ Push-Location と Pop-Location の別名として使えます。ただし、スタックはコマンドプロンプトとは別に管理されます。

まとめ

目的コマンド
現在のフォルダを記憶して移動するpushd フォルダ
記憶したフォルダへ戻るpopd
記憶しているフォルダを一覧表示するpushd(引数なし)
ネットワークパスへ移動するpushd "\\server\share"
バッチファイルの場所へ移動するpushd "%~dp0"

関連記事

練習問題

練習問題

pushd \\server\share を実行したあと、popd を実行するとどうなりますか?

正しいものを 1 つ選んでください。

  1. pushd する前のフォルダに戻り、割り当てられたドライブ文字も解除される
  2. ネットワークの接続が切断され、同じ場所にとどまる
  3. 1 つ上のフォルダに移動する
#コマンドプロンプト #バッチファイル #pushd #popd #ディレクトリ #コマンド