このページの本文へ

前へ 1 2 次へ

Windows Info 第344回

Windowsにおける「パス」をあらためて考える

2022年09月11日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

パスの長さが259文字を越えるとコマンドラインからは扱えなくなる。これは、パス名の長さの制限に引っかかるためだ

 パソコンを使うとき、いまだに避けて通れないのが「パス」だ。最近では、基本的なことを学ぶことなく、すぐにスマホやパソコンを使ってしまうため、「パス」についても断片的な知識しかない人もいるはず。そこで、今回はパスを見直してみることにする。

 パスとは、簡単に言えば、「ファイルやディレクトリ」を指定する方法だ。すべてのパスとディレクトリには必ずパスがある。なお、以前解説したように、ディレクトリはフォルダーの1種だが、ファイルシステムの上に作られるものに限定される。これについては以前解説した(「Windowsにおけるフォルダーとディレクトリとは」)。

 パスを説明する前に、Windowsにおける「ドライブ」「ボリューム」「パーティション」「ディスク」について解説しておく。これがWindowsの外部記憶装置(ストレージあるいはストレージデバイスともいう)の基本概念である。

 「ディスク」(Disk)とは外部記憶装置を指す。このディスクの記憶領域を分割したものが「パーティション」(Partition)、パーティションを特定のファイルシステムで初期化すると「ボリューム」(Volume)ができる。ボリュームをマウントしたものが「ドライブ」(Drive)で、これにドライブ文字を割り当てることができる。

ようやくパスについての話

 パスは、ファイルシステム(ボリューム)のファイルやディレクトリを指し示すための表記方法だ。すべてのファイル、ディレクトリにはパスがあり、これで1つに特定される。パスは、以下のような構造となる。

〈ドライブ文字〉〈ディレクトリの名前〉〈パス区切り文字〉……〈パス区切り文字〉〈ファイルの名前〉

〈ドライブ文字〉〈ディレクトリの名前〉〈パス区切り文字〉……〈ディレクトリの名前〉

 まずは、ファイルとディレクトリの名前である。ファイルやディレクトリには、必ず名前がある。名前には利用できない文字があるが、逆に言えば、利用できない文字を使わなければ、漢字でもASCII文字でもなんでもよい。

文字 コード 名称
\ 0x5C 円マーク
0x2F スラッシュ
: 0x3A コロン
* 0x2A アスタリスク
? 0x3F 疑問符
" 0x22 2重引用符
> 0x3E 大なり不等号
< 0x3C 小なり不等号
| 0x7C 縦棒、バー

 パスとは、ドライブ文字とルートディレクトリから始めて、ファイルやディレクトリが存在するディレクトリまでに通過するディレクトリ名をパス区切り文字で区切って並べたものだ。

 1つのパスの長さには、260文字という制限がある。原則として、コマンドなどにパスを渡すような場合には、この制限を超えないようにする。ディレクトリ階層の深さなどは関係なく、パス文字列の長さが制限となる。なお、パス文字列は必ず最後にヌル文字を含むため、見た目の長さは259文字である。

 Windowsの内部的には、パスの表記方法を変更することで、最大32767文字の拡張パスを扱えるようになっている。しかし、パスを最初に扱うのはアプリケーションなので、実際に長いパスをどう扱うのかはアプリケーションに依存する。

 このパスをネットワーク共有しているファイルやディレクトリの指定ができるように拡張したものが「UNC」(Universal Naming Convention)で「\\サーバー名\共有名\パス」という構造を持つ。

カレントディレクトリを活用する

 コマンドラインで長いパスを扱うのは面倒なので「カレントディレクトリ」、あるいは「ワーキングディレクトリ」という機能がある。これは、特定のディレクトリを記憶し、そこまでのパスを省略した相対的なパスでファイルやディレクトリを指定可能にするものだ。

 これは、コマンドラインインタプリタ(シェル)が持つ機能であり、最終的にはファイルやディレクトリはフルパスに変換されて処理されている。コマンドラインに慣れると、カレントディレクトリを「現在位置」として認識できるようになる。逆にいうと、コマンドラインを使うときにカレントディレクトリを現在位置として認識できないと、パス指定を正しく記述できない。

 カレントディレクトリに設定されたディレクトリまでのパスには、「.」という略記方法が使える。また、親ディレクトリは「..」と表記できる。たとえば、カレントディレクトリにあるDIRというサブディレクトリの「file01.txt」は、「.\DIR\File01.txt」と表記できる。あるいは「.\」を省略して「DIR\File01.txt」とすることもできる。

 ドライブ文字やルートディレクトリから表記したパスを「フルパス」といい、カレントディレクトリを基準にしたパスを「相対パス」と言う。フルパスは、ドライブ指定文字またはドライブ区切り文字から始まるが、相対パスは、ピリオドまたは直接ディレクトリ名、ファイル名から始まる。

 また、ディレクトリやファイルの名前にスペースが含まれる場合、常にパスをシングルクオート(PowerShellやbash)やダブルクオート(cmd.exe)でくくる必要がある。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン