pushd/popdでフォルダーを移動するTech TIPS

cdコマンドで移動すると履歴が残らず、元のフォルダーへ戻るのが面倒である。pushdコマンドで移動すると、履歴がスタックに残り、popdコマンドで簡単に戻ってくることができる。引数なしでpushdコマンドを実行すると、履歴が表示される。

» 2006年09月16日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003


解説

 コマンドプロンプト上で作業をする場合、あちこちのフォルダーへ移動しながらファイルを操作したり、コマンドを実行したりすることが多い。Windows OSに限らず、コマンドや設定ファイル、ログファイルなどは複数のフォルダーに分かれて置かれているため、このような移動は避けられない。もしフォルダーを移動せずに作業しようとすると、全てのファイルパスをフルパスで指定しなければならず、とても煩わしくなるからだ。

●cdではなく、pushdコマンドで移動する

 フォルダーを移動する場合、コマンドプロンプトでは「cd」コマンドを利用する。引数に移動したい先のフォルダー名を指定することにより、カレントフォルダー(UNIX流に言えばカレントディレクトリ)が、指定されたフォルダーに変わる(移動する)。

 だがcdで移動する場合、元のフォルダーへ戻る簡単な方法がない。別のフォルダーへ移動して作業し、その後また元のフォルダーへ戻って作業を続けるというのはよくある状況だが、cdを利用する場合、元のフォルダーへ戻るには、元の場所を憶えておいて、「cd 元の場所」というコマンドを実行しなければならない。

 このような場合はcdの代わりにpushd(プッシュディレクトリ)コマンドを利用するとよい。使い方はcdコマンドと同じく、「pushd 移動先」とすればよい。これを実行すると、cdコマンドと同様に、カレントフォルダーが指定されたフォルダーになる。しかし移動の直前に、現在のカレントフォルダーの情報が「ディレクトリスタック」と呼ばれる(cmd.exeの)内部的なスタックに積まれる。引数なしでpushdを実行すると、このスタックに積まれているエントリ(カレントフォルダーの履歴)の一覧が表示される。

●popdで元のフォルダーへ戻る

 pushdでスタックに積まれたカレントフォルダーの履歴情報は、popd(ポップディレクトリ)コマンドで1つずつ取り出し、元の場所へ戻ることができる。popdコマンドには引数はなく、単にpopdというコマンドを実行すればよい。すると、カレントフォルダーが、pushdで保存されていた場所へ戻る。pushdの結果はスタックになっているので、popdを連続して実行すれば、順番に元のフォルダーへ戻ることができる。ただし最初の場所まで戻ると(ディレクトリスタックが空だと)、popdしてもカレントフォルダーは変化しない。

C:\Documents and Settings\Administrator>cd ……最初の場所は?
C:\Documents and Settings\Administrator

C:\Documents and Settings\Administrator>pushd c:\ ……c:\へ移動

C:\>pushd WINDOWS ……C:\WINDOWSへ移動

C:\WINDOWS>pushd system32 ……C:\WINDOWS\system32へ移動

C:\WINDOWS\system32>pushd "C:\Program Files\Microsoft Office" ……C:\Program Files\Microsoft Officeへ移動

C:\Program Files\Microsoft Office>pushd f:\PRJ\Program ……F:\PRJ\Programへ移動

F:\PRJ\Program>pushd ……pushdの履歴
C:\Program Files\Microsoft Office ……スタックの一番上
C:\WINDOWS\system32
C:\WINDOWS
C:\
C:\Documents and Settings\Administrator ……スタックの一番下

F:\PRJ\Program>popd ……(直前の)元のフォルダーへ復帰

C:\Program Files\Microsoft Office>popd ……元のフォルダーへ復帰

C:\WINDOWS\system32>popd ……元のフォルダーへ復帰

C:\WINDOWS>popd ……元のフォルダーへ復帰

C:\>popd ……元のフォルダーへ復帰

C:\Documents and Settings\Administrator>popd ……元のフォルダーへ復帰

C:\Documents and Settings\Administrator> ……これ以上戻らない



 このように、pushd/popdを使えば、元のフォルダーへ簡単に戻れるし、同一ドライブ上だけでなく、別のドライブ上のカレントフォルダーへ移動したり、そこから戻ったりできる。

 なおUNIXなどでは、ディレクトリスタックの先頭の2つのエントリを交換する機能があるが(現在のカレントフォルダーと、1つ前のカレントフォルダーを交換する。何度も繰り返すと、それらの間で素早く、行ったり来たりできる)、Windows OSのpushdにはそのような機能はない。引数なしで実行すると、ディレクトリスタックの内容が表示される。

●pushdでUNCを指定する

 pushdの引数として、\\server1\usr\user01\commandのようなUNCパスを指定すると、Windows OSでは、適当な空きドライブに指定されたドライブ文字をマップし、そのドライブに移動してカレントフォルダーを設定する、という機能がある。「net use * \\server1\usr」「pushd \user01\command」というコマンドを連続で実行したのとほぼ同じ効果がある。この場合、popdを実行すると、元のフォルダーへ戻るだけでなく、ドライブのマップも解除される。

C:\>pushd \\server1\usr\user01\command ……UNCでpushdする

Z:\user01\command> ……移動先。Z:ドライブにマップされている
Z:\user01\command>net use ……マップの状況
新しい接続は記憶されません。

ステータス  ローカル名 リモート名               ネットワーク名
 ------------------------------------------------------------
OK           Z:        \\Server1\usr            Microsoft Windows Network
コマンドは正常に終了しました。

Z:\user01\command>popd ……popdで戻る

C:\> ……元の場所



■関連記事(Windows Server Insider)


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。