ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

WindowsのpushdコマンドでUNCパスを指定した場合の挙動について

Windowsのpushdコマンドですが、通常の使い方ではcdコマンドの強化版といった形で移動するディレクトリを保持してくれる仕組みがあります。

今回は、その標準の使い方の説明は割愛します。主な使い方は以下の記事をご参照ください。
コマンドプロンプト | カレントディレクトリをスタックに記憶してから別のディレクトリへ変更(PUSHD, POPD)

今回調べたいこと

今回調べたかったのは、pushdコマンドの引数にUNCパスを指定した場合の挙動の話です。

そもそもUNCパスとは何かというのは、以下の記事から引用させていただきました。
実は大量にあるWindowsのファイルパス記述方法まとめ - GIGAZINE

UNCパスというのは、「\\192.168.1.15\Media」のような記法で記載したパスのことです。ネットワーク上の他の端末のパスを示すことができる記法ですね。

UNCパスとは?

pushdコマンドの引数にUNCパスを指定した場合の挙動について、少々深堀して調べたかったので確認してみたいと思います。

pushdコマンドのhelpを確認する

まずは、pushdコマンドのhelpを見てみます。

pushdコマンドのhelp

一つずつ確認していきます。コマンド拡張機能はデフォルトで有効です。そのため、pushdコマンドはネットワークパスを受け付けることができると記載あります。ネットワークパスとは、おそらくUNCパスの別名かと思います。

コマンド拡張機能を有効にすると、PUSHD コマンドは、通常のドライブ文字
とパスだけでなくネットワーク パスも受け付けるようになります。


pushdにネットワークパスを指定すると、自動的に新たなネットワークドライブを作成し、その作成したネットワークドライブを使用してフォルダを移動するように振る舞うようです。

ネットワーク パスを指定した場合は、PUSHD は指定されたネットワーク
リソースを指し示す一時的なドライブ文字を作成し、新しく定義されたドライブ
文字を使って現在のドライブとディレクトリを変更します。


そして、その作成された一時的なドライブ文字は、「Z:」から前に順に未使用のドライブ文字が使用されるとのことですね。

一時的なドライブ文字は、Z: から前へ順に、最初に見つかった未使用のドライブ文字が
割り当てられます。

pushdのUNCパスの検証

それでは、実際に上記の説明で見たことを検証してみようと思います。

検証のために、ローカルに2つの共有を作成しました。

共有1
共有2

まずは、pushdコマンドで1つ目の共有をUNCパスで指定してみましょう。ドライブ文字が「Z:」に変更されて、正しくフォルダも移動できているようです。

pushdコマンドで共有1を引数にする

上記の状態で、さらにpushdコマンドで2つ目の共有をUNCパスで指定してみましょう。なるほど、新しいドライブ文字として「Y:」に変更されてフォルダも移動できたようです。想定通り、Zから前にアルファベット順に割り当てられているようですね。

pushdコマンドで共有2を引数にする

因みに、一時的に作成されたネットワークドライブですが、popdコマンドを実行した場合や現在のセッション(プロンプト)が終了したときに、削除されます。

おわりに

いかがでしたでしょうか。簡単にpushdコマンドでUNCパスを指定した場合の挙動について検証をしてみました。

pushdコマンドはとても便利なコマンドなので、便利に使っていきたいものです。

今回はこの辺で失礼いたします。最後までお読みいただきありがとうございました。