Windowsのエクスプローラを見ると分かるように、Windowsのファイル システムは階層型のフォルダ構成になっている。なおWindows 3.1のころまでは、これをフォルダといわずにディレクトリと呼んでいた。このため、コマンド プロンプト関係のコマンドや解説書などには、いまだに「ディレクトリ」という呼び方が残っているので注意しておく必要がある。コマンド プロンプトの解説をする場合には、フォルダと呼ばずに、MS-DOSの頃からの慣習どおり、ディレクトリと呼んだほうが分かりやすいかもしれない。Windowsでは、厳密にはフォルダとディレクトリは異なるものを指す用語であるからだ。フォルダには、Windowsがファイルシステムの一部であるかのように見せている仮想的なものも含まれている。例えばコントロールパネルは、それに対応するディレクトリはディスク上に存在せず、エクスプローラが作り出している仮想的なフォルダであり、またゴミ箱は、それに相当するディレクトリは存在するが、コマンド プロンプトから直接見えるものと、エクスプローラから見えるのものは異なっており、コマンド プロンプトから見えるディレクトリに格納されているデータは、Windows側のシェルであるエクスプローラが作り出して表示している。
ファイル システム内の現在位置を表わすカレント ディレクトリ
ところでエクスプローラでは、ツリー表示を使えばすべてのフォルダを一覧表示させることができるが、コマンドラインではそうはいかない。このためコマンドプロンプト環境には、「カレント ディレクトリ」(カレント フォルダ)という概念がある。カレント ディレクトリとは、コマンド プロンプトや、そこから起動されたプログラムから見て、デフォルトの処理対象となるディレクトリ(フォルダ)のことを指しており、ディレクトリ指定の付いていないファイル名は、原則としてこのカレント ディレクトリから探すことになっている。簡単にいうとカレント ディレクトリは、ファイルシステム内での「現在位置」を意味するものである。
このカレント ディレクトリを変更するには、「cd」コマンド(change directoryの略)を使い、その引数には変更したいディレクトリの位置を与える。現時点でのカレント ディレクトリを表示させたければ、引数なしでcdコマンドを実行すればよい。
C:\>cd winnt
C:\WINNT>cd
C:\WINNT
この例では、カレント ディレクトリを「WINNT」に変更し、それをcdコマンドで確認している。もっとも、デフォルトではコマンド プロンプト中にカレント ディレクトリが表示されるようになっているので、いちいちcdコマンドで確認する必要性は少ないだろう(この例ではプロンプトとしてカレント ディレクトリが表示されているが、必要ならば別のものを表示させることもできる。詳細については今後説明する)。
カレント ディレクトリにないファイルはどうやって指定するかというと、「パス(path)」というものを使って、ファイルの位置を指定する。これは、ファイル名の前に、そのファイルが含まれているディレクトリ名を付加したものである。先頭にはそのファイルが置かれているドライブ名を置き、ディレクトリツリーの最上位(これを「ルートディレクトリ」という)から、そのファイルに到達するまでに存在するディレクトリ名を「\」で順番に接続する。このようなパスの指定方法を「絶対パス」もしくは「フルパス」といい、例えば、
C:\WINNT\SYSTEM32\XCOPY.EXE
のように指定する。これは、「C:」ドライブの「WINNT」ディレクトリの下の「SYSTEM32」ディレクトリの中にある「XCOPY.EXE」というファイル名を表わしている。WindowsやMS-DOSでは、このようにディレクトリの区切りに円(「\」)マークを使うが、これは米国などのマシンでは、逆スラッシュ記号になる(文字コードは同じだが、フォントが異なるので、日本語モードでは「\」記号になる)。本来MS-DOSがお手本としたUnixでは、オプションの開始記号としてスラッシュを使っていたが、MS-DOS(Ver.1.xx)では、すでにこのスラッシュをオプションの開始を示す記号として扱っていたため、ツリー構造のディレクトリを導入するときに、スラッシュを避けて、(似た記号として)逆スラッシュを使ったためである。
以上で述べたのは絶対パスの例であったが、それとは違って、カレント ディレクトリを基準にした「相対パス」という表記方法もある。例えば、カレント ディレクトリの下に「FOO」というディレクトリがあり、その下に「BAR.TXT」というファイルがあるとしたら、
FOO\BAR.TXT
と指定するのである。また、「.」という記号でカレント ディレクトリを、「..」という記号でカレント ディレクトリのすぐ上のディレクトリをそれぞれ表わすという簡便な記法が用意されているので、例えば、上位ディレクトリにあるFILE.TXTというファイルは、
..\FILE.TXT
と表わすことができるし、カレント ディレクトリのとなりのディレクトリ「NEXT」にある「FILE.TXT」は、
..\NEXT\FILE.TXT
と表現することができる。「..」を複数使って
..\..\FILE.TXT
とすれば、これは、2つ上のディレクトリにあるFILE.TXTを表わすことになる。なおWindows 9xではこのような場合、「...」という表記方法を使って2つ上のディレクトリを表わしたり、「....」として3つ上のディレクトリを表わしたりするという方法が用意されていたが(「.」は任意の数だけ接続可能)、Windows 2000では、「.」と「..」しか利用できない。
かつてMS-DOSでは、ドライブはパス名とは異なるもので、ドライブ名からのフルパス指定は可能だったが、cdコマンドでカレント ドライブまで変更することはできなかった。カレント ドライブを変更するためには、ドライブ名に「:」(コロン)を付けて
d:
などとして変更していたが、Windows 2000では、cdコマンド自体が拡張されて
cd /d d:\abc
のように「/d」コマンドを付けることで、カレント ディレクトリだけでなく、カレント ドライブも同時に切り替えることが可能になっている(「/d」オプションを付けないと、カレント ドライブは変更されない)。ただし少々ややこしいが、ドライブごとにカレント ディレクトリが保持されているので、例えば「C:」と「D:」の2つのドライブがあった場合、
d: Dドライブへカレント ドライブを変更
cd \ABC カレント ディレクトリを\ABCへ
c: Cドライブへ変更
cd \DEF カレント ディレクトリを\DEFへ
と、それぞれでカレント ディレクトリを指定しておき、
dir d:
とすると、「D:」ドライブの「\ABC」のディレクトリにあるファイルの一覧が表示される。前記の処理は、「/d」オプションを使うと、
cd /d d:\abc
cd /d c:\def
と同等になる。つまりカレント ディレクトリの上方は、各ドライブごとに記憶されているわけだ。
さて、dirコマンドでファイル名を見ると、大文字と小文字が使われているのが分かるだろう。しかし、Windowsでは、ファイル名については、大文字と小文字を区別しない。したがって、ファイルを指定するのに「file.txt」と指定しても、「FILE.TXT」や「File.txt」と指定しても同じファイルにアクセスすることができる。また、一部ファイル名やパス名には、名前の中にスペース(空白記号)が含まれたものがある。例えば、プログラムがインストールされる「Program Files」ディレクトリなどがこれに該当する。スペースは、コマンド プロンプトでは、引数やオプションの区切りに使われるため、このようなパスを指定する場合、引数全体をダブルクオートでくくる必要がある。具体的には、
dir "c:\program files\common files"
などとする。
Copyright© Digital Advantage Corp. All Rights Reserved.