LoginSignup
0
3

More than 5 years have passed since last update.

Windowsのパス「ドライブレター:」、「\」のについて

Posted at

Windowsで「ドライブレター:」をルートディレクトリと勘違いしている人が多いようなので、「ドライブレター:」とついでに「\」についてもまとめてみる。

パス 意味
ドライブレター: そのドライブのカレントディレクトリ d:
\ コマンドを実行した時カレントディレクトリが属するドライブのルートディレクトリ \

ドライブレター:

コマンドプロンプトを起動すると、デフォルトの場合%USERPROFILE%がカレントディレクトリになっている。
この状態で「dir d:」や「d:」とするとDドライブのルートディレクトリが表示されるため、「d:」は「Dドライブのルートディレクトリ」のことだと勘違いしている人が多いようだ。

prompt
C:\Users\UserA>dir d:
 ドライブ D のボリューム ラベルは Data です
 ボリューム シリアル番号は XXXX-XXXX です

 D:\ のディレクトリ
     ・・・

これは、コマンドプロンプト起動直後だと、Dドライブのカレントディレクトリは、Dドライブ直下なのでこのようになっているだけ。

Windowsでは、ドライブごとに固有のカレントディレクトリを持っている。
これについては以下のサイトの方が詳しいかもしれない。
http://www.atmarkit.co.jp/ait/articles/0006/01/news001.html

cd でDドライブのカレントディレクトリを移動してから同じ様に「dir d:」すると違う結果になることがわかる。

prompt
C:\Users\UserA>cd D:\directory
C:\Users\UserA>dir d:
 ドライブ D のボリューム ラベルは Data です
 ボリューム シリアル番号は XXXX-XXXX です

 D:\directory のディレクトリ
     ・・・

C(fullpath.c)で_fullpath()とGetFullPathName()を使って「ドライブレター:」を変換してみる。

prompt
C:\Users\UserA>cd D:\directory
C:\Users\UserA>fullpath.exe d:
      Source path = "d:"
      _fullpath() = "D:\directory"
GetFullPathName() = "D:\directory"

python(fullpath.py)でも同じ結果になった。

prompt
C:\Users\UserA>cd D:\directory
C:\Users\UserA>python fullpath.py
source path = d:
fullpath    = D:\directory

\

ルートディレクトリを表すのはこっち。
コマンドを実行した時のカレントディレクトリが属するドライブのルートディレクトリになる。

もしコマンド(プログラム)内でカレントディレクトリを別のドライブに変更した場合、変更したドライブのルートディレクトリになる。

prompt
C:\Users\UserA>dir \
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は XXXX-XXXX です

 C:\ のディレクトリ
     ・・・

ちなみにUNIXと同じように「/」もルートディレクトリを表すが、Windowsのコマンドの場合、オプションスイッチとして扱われてしまう。

prompt
C:\Users\UserA>dir /
無効なスイッチです - ""

自作コマンドでは、使用する関数にもよるが「/」もルートディレクトリとして処理される。

prompt
C:\Users\UserA>fullpath.exe /
      Source path = "/"
      _fullpath() = "C:\"
GetFullPathName() = "C:\"
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3