cdコマンドで移動すると履歴が残らず、元のフォルダーへ戻るのが面倒である。pushdコマンドで移動すると、履歴がスタックに残り、popdコマンドで簡単に戻ってくることができる。引数なしでpushdコマンドを実行すると、履歴が表示される。
対象OS:Windows 2000/Windows XP/Windows Server 2003
コマンドプロンプト上で作業をする場合、あちこちのフォルダーへ移動しながらファイルを操作したり、コマンドを実行したりすることが多い。Windows OSに限らず、コマンドや設定ファイル、ログファイルなどは複数のフォルダーに分かれて置かれているため、このような移動は避けられない。もしフォルダーを移動せずに作業しようとすると、全てのファイルパスをフルパスで指定しなければならず、とても煩わしくなるからだ。
フォルダーを移動する場合、コマンドプロンプトでは「cd」コマンドを利用する。引数に移動したい先のフォルダー名を指定することにより、カレントフォルダー(UNIX流に言えばカレントディレクトリ)が、指定されたフォルダーに変わる(移動する)。
だがcdで移動する場合、元のフォルダーへ戻る簡単な方法がない。別のフォルダーへ移動して作業し、その後また元のフォルダーへ戻って作業を続けるというのはよくある状況だが、cdを利用する場合、元のフォルダーへ戻るには、元の場所を憶えておいて、「cd 元の場所」というコマンドを実行しなければならない。
このような場合はcdの代わりにpushd(プッシュディレクトリ)コマンドを利用するとよい。使い方はcdコマンドと同じく、「pushd 移動先」とすればよい。これを実行すると、cdコマンドと同様に、カレントフォルダーが指定されたフォルダーになる。しかし移動の直前に、現在のカレントフォルダーの情報が「ディレクトリスタック」と呼ばれる(cmd.exeの)内部的なスタックに積まれる。引数なしでpushdを実行すると、このスタックに積まれているエントリ(カレントフォルダーの履歴)の一覧が表示される。
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の引数として、\\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:\> ……元の場所
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.