とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

バッチファイル内のネットワークパス操作はpushd/popdを使おう

バッチファイルで作業フォルダを指定してexe実行の記事で、
フォルダ移動に「cd」コマンドを利用しました。

しかし、バッチファイルやコマンドライン内で
UNC、つまりネットワークパスが絡んでくる場合は
「pushd/popd」コマンドを使うと便利です。

ネットワークパス(UNC)を扱えないコマンド


「cd」コマンドは、残念ながらUNCを扱うことができません。

例えばこのようなコマンドを打つと・・・・

cd \\192.168.11.5\Users\Public


'\\192.168.11.5\Users\Public'
CMD では UNC パスは現在のディレクトリとしてサポートされません。


う・・・

しかし「pushd」コマンドであれば、UNCを扱うことができます。

pushd \\192.168.11.5\Users\Public

C:\Users\user>pushd \\192.168.11.5\Users\Public

Y:\Public>


ほらね。

pushdコマンドの挙動


pushdコマンドにネットワークパス(UNC)を指定すると、そのネットワークパスに対して
ネットワークドライブを割り当てます。
上述の実行結果が「Y:\Public>」となっているのは
「\\192.168.11.5\Users\Public」にY:\ドライブが割り当てられた事を表していて

エクスプローラーで確認すると、ネットワークドライブが割あたっている事を確認することができます。
20141127_pushd

<h4>popdコマンドで戻る
さて、pushdコマンドと対になっている、popdは、
「元のパスに戻る」という機能を有しています。
実行と同時にネットワークドライブも解除されます。
「元のパスに戻る」は、cdコマンドには無いので便利です。

Y:\Public>popd

C:\Users\user>


このように、ネットワークパス(UNC)をサポートしていないコマンドを利用する場合は
pushdで一旦ネットワークドライブを作成し、あたかもローカルで処理するように見せかけることで
対応できます。

それでは良きコマンドラインライフを!

前のページ

FC2Ad