macOSやLinuxではファイルパスの記述方法が非常にシンプルですが、Windowsには幾通りものファイルパス記述方法が存在しています。そんなWindowsのファイルパスについて調査した結果を、ファイル管理アプリ「Fileside」を開発するErik Jälevik氏がまとめています。

The weird world of Windows file paths | Fileside

https://www.fileside.app/blog/2023-03-17_windows-file-paths/

Windows システムのファイル パス形式 | Microsoft Learn

https://learn.microsoft.com/ja-jp/dotnet/standard/io/file-path-formats

ファイルパスには、各ファイルまでの道筋をすべて記述する「絶対パス」と、現在位置から目的のファイルへの道筋を示す「相対パス」の2種類が存在しています。Windowsで利用可能なパスの記述方式は以下の通り。なお、日本語版Windowsでは「C:¥Program Files¥Mozilla Firefox」といったように「¥」でフォルダが区切られていますが、今回は「C:\Program Files\Mozilla Firefox」といったように海外で広く使われている区切り文字「\」を用いて記載します。

◆絶対パス

・通常のパス

以下のようにドライブレターに続いてフォルダを順番に並べることで、作業フォルダの場所にかかわらず一意の場所を示せる絶対パスを記述できます。

C:\Program Files\Mozilla Firefox

・UNCパス

UNCは「Universal Naming Convention」の略で、UNCパスはネットワーク上のデバイスに保存されたフォルダやファイルの位置を示すパスです。例えば、IPアドレス「192.168.1.15」に存在するデバイス内の「Media」フォルダの位置は、以下のように表記できます。

\\192.168.1.15\Media

IPアドレスの部分は、デバイスの名前に置き換え可能。例えば「192.168.1.15」が「Backup」という名前だった場合、以下のように表記できます。

\\Backup\Media

また、以下のように自身のアドレスを指定することで、ローカルのフォルダにアクセスすることも可能です。

\\localhost\C$\Windows
\\コンピューター名\C$\Users\Windows
\\ローカルIPアドレス\C$\Users\Windows

実際にUNCパスを使ってローカルフォルダにアクセスする例が以下。まず、エクスプローラーを開いてUNCパスを入力し、Enterキーを押します。今回使ったPCのローカルIPアドレスは「192.168.0.77」だったので、「\\192.168.0.77\C$\Windows」と入力してEnterキーを押しました。



すると、以下のようにCドライブ内のWindowsフォルダにアクセスできました。



・デバイスパス

デバイスパスは「\\?\」もしくは「\\.\」から始まるパスで、フォルダやファイルに加えてプリンターやモニターなどの周辺機器の場所も表せるパスです。デバイスパスでファイルの位置を示す例は以下の通り。

\\?\Z:\Backup\Media
\\.\Z:\Backup\Media

◆相対パス

・現在の位置からの相対パス

現在のフォルダに内包されているフォルダにアクセスする場合は、「.\」に続いてフォルダ名を記せばOK。例えば、「C:\Windows」から「C:\Windows\System32」への相対パスは「.\System32」と記します。



また、「..\」といったように「.」を2つ並べると「1つ上の階層からのパス」を表現可能。例えば「C:\Windows\System32」から「C:\Windows\SystemApps」への相対パスは「..\SystemApps」と示します。

・現在のドライブのルートからの相対パス

ドライブレターを記さずに「\」からパスを記述すると、作業中のドライブのルートからの相対パスを示せます。例えば、Cドライブ内で作業している際に「C:\Windows」の位置を示す相対パスは「\Windows」です。

・指定ドライブ内の現在のフォルダからの相対パス

「C:Windows\System32」のように、ドラブレター直後の「\」を削除すると「指定ドライブ内の現在のフォルダからの相対パス」を示せます。しかし、Microsoftの公式ドキュメントによると、絶対パスと間違えて「指定ドライブ内の現在のフォルダからの相対パス」を使うことが多くのバグの原因となっているとのことです。