Programming Field

Pushd - DOS/コマンドプロンプト コマンド一覧

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

構文

pushd <directory>

オプション一覧

ディレクトリ名の指定以外に利用できるオプションはありません。

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

解説

Pushd使用例1

Pushdについて

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

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

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

  • <directory> で指定した名前の大文字・小文字が実際のディレクトリの大文字・小文字と異なる場合、実際のディレクトリの形式がカレントディレクトリに使用されます。拡張機能が無効の場合はこれが行われず、<directory> で指定した通りのパスがカレントディレクトリに設定されます。
  • <directory> がスペースを含むパスである場合、引用符(" ")で括らなくても正しくパスを解釈します。拡張機能が無効になっている場合は引用符で括る必要があります。

ネットワークパスの利用

Pushd使用例2

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

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

サンプル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はカレントディレクトリを戻した後ネットワークドライブを削除します。

関連項目