Programming Field

Pushd - DOS コマンド一覧

スポンサーリンク

[Windows NT系] 指定したディレクトリをカレントディレクトリに変更します。この変更はPopdコマンドにより以前の状態に戻せます。

構文

pushd <directory>
<directory>
移動するディレクトリを指定します。現在のドライブと異なるディレクトリを指定することもでき、その場合はカレントドライブも変更されます。

解説

PushdとPopdを使い、特定の作業を行う際に一時的なカレントディレクトリの変更を行うことができるようになります。Pushdは複数回呼び出すことができ、対応するPopdの呼び出しでそれぞれ元に戻すことができます(スタック構造)。

[拡張構文] 拡張機能が有効になっている場合に <directory> にネットワークパスが指定された場合、ネットワークパスに含まれる「\\コンピューター名\共有名」に対して一時的にネットワークドライブが作成され、そのドライブ内のディレクトリにカレントディレクトリを移動します。このネットワークドライブはPopdを実行したタイミングで解除されます。なお、Popdを呼び出さなかった場合も、現在のセッション(プロンプト)が終了した場合はPushdによるネットワークドライブは削除されます。

※ 一時的ではないネットワークドライブの割り当てにはNetコマンドを使います。また、認証が必要な場合はあらかじめNetコマンドを使用して認証しておく必要があります。
Substコマンドでもネットワーク上のパスをドライブに割り当てることができ、Substで割り当てた場合はセッションが終了しても再起動するまで使用することができますが、Substによるドライブはネットワークドライブとは見なされません。

また、拡張機能が有効になっている場合Chdirと同様に以下の機能が有効になります。

なお、バッチファイルにおいてSetlocalを実施した状況でPushdを実行し、Endlocal(またはバッチファイルを終了)をして新たに作ったローカル環境を終了させると、カレントディレクトリはSetlocalを行う前のものに戻りますが、これはカレントディレクトリをSetlocal前のものに書き換えるだけであってPushdした回数だけPopdされる挙動にはならず、例えば2回Pushdしている状況下でEndlocal後にPopdするとカレントディレクトリは1回目にPushdしたディレクトリになります。

サンプル1

pushd D:\Temp
foo.exe
popd

D:\Temp ディレクトリに一時的に移動して「foo.exe」を実行し、Popdでカレントディレクトリを元に戻します。

サンプル2

pushd \\myserver\files\20120922
copy /Y data.csv E:\
popd

[拡張構文] ネットワークパス「\\myserver\files\20120922」に一時的に移動し、その中のファイル「data.csv」を「E:\」の中にコピーしてPopdで戻します。このコマンドが実行されると、Pushdは「\\myserver\files」に対して一時的にネットワークドライブを作成し、カレントディレクトリを「x:\20120922」(xはその時使用可能になっていたドライブ文字)に設定します。その後、Popdはカレントディレクトリを戻した後ネットワークドライブを削除します。