Windows上的文件系统路径比你想象的要丰富多彩。在任何Unix派生的系统上,路径都是一件非常简单的事情:如果它以a开头,那就是一条路径。Windows则不然,它提供了各种令人困惑的方案来构建路径./。 开发文件管理应用程序“Fileside”的Erik Jälevik总结了Windows文件路径的调查结果。
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/zh-cn/dotnet/standard/io/file-path-formats
Windows有两种类型的文件路径:绝对路径(描述每个文件的所有路径)和相对路径(指示从当前位置到目标文件的路径)。 Windows 中可用的路径描述方法如下所示。一般在Windows中,文件夹用“\”分隔,例如“C:\Program Files\Mozilla Firefox” 。但是在一些国家的版本可能不一样,例如在日文版Windows中,文件夹用“¥”分隔,例如“C:¥Program Files¥Mozilla Firefox”
1、 绝对路径
・正常路径: 通过在驱动器号之后按顺序排列文件夹,如下所示,您可以编写一个绝对路径,该路径可以指示唯一位置,而不管当前工作文件夹的位置如何。
C:\Program Files\Mozilla Firefox
・UNC 路径:UNC是“Universal Naming Convention”的缩写,UNC路径是表示保存在网络上的设备上的文件夹和文件的位置的路径。例如,,IP 地址为 192.168.1.15 的设备上媒体文件夹的位置可以按如下方式写入:
\\192.168.1.15\Media
IP 地址可以替换为设备的名称。 例如,如果“192.168.1.15”被命名为“Backup”,则可以这样写:
\\Backup\Media
您还可以通过指定其自己的地址来访问本地文件夹,如下所示:
\\localhost\ \Windows
\\计算机名称\C$\Users\Windows
\\本地IP地址\C$\Users\Windows
下面是使用 UNC 路径实际访问本地文件夹的示例。 首先,打开文件资源管理器并键入UNC路径,然后按回车(Enter)键。 使用的PC的本地IP地址是“192.168.31.90”,所以输入“\\192.168. 31.90\C$\Windows”并按回车键。
然后,能够访问C驱动器中的Windows文件夹,如下所示。
・设备路径: 设备路径是以“\\?\”或“\\.\”开头的路径,除了文件夹和文件外,还可以表示打印机和显示器等外围设备的位置。 以下是显示文件在设备路径中的位置的示例。
\\?\Z:\Backup\Media
\\.\Z:\Backup\Media
2、相对路径
・当前位置的相对路径: 如果要访问当前文件夹中包含的文件夹,可以在“.\”后写入文件夹名称。 例如,从“C:\Windows”到“C:\Windows\System32”的相对路径写为“.\System32”。如果当前目录是“C:\Windows”,在命令行输入“CD .\System32” ,则当前目录跳转到“C:\Windows\System32”。
另外,像“..\”这样排列两个“.”的话,可以表示“来自上一个阶层的路径”。例如,从“C:\Windows\System32”到“C:\Windows\SystemApps”的相对路径显示为“..\SystemApps”。 如果当前目录是“C:\Windows\System32”, 在命令行输入“CD ..\SystemApps” ,则当前目录跳转到“C:\Windows\ SystemApps”。
•当前驱动器根目录的相对路径: 可以通过从不带驱动器号的“\”写入路径来表示相对于活动驱动器根目录的路径。 例如,当前在 C 驱动器中工作时,“C:\Windows”位置的相对路径是“\Windows”。
・指定驱动器中当前文件夹的相对路径: 如果删除紧跟在 dra 字母后面的“\”,例如
如“C:Windows\System32”所示,删除驱动器号后的“\”后,可以显示“指定驱动器中当前文件夹的相对路径”。但是,根据微软的官方文档,错误地使用“指定驱动器中当前文件夹的相对路径”是造成很多错误的原因。
正如Erik Jälevik所总结的,window在文件路径这件事上“说同一件事的方式太多了“。
“有了所有这些知识,我们意识到我们可以构造几乎无限数量的不同路径字符串,这些路径字符串都引用同一个目录。
C:\CHAMELEON
c:\chameleon
C:\/\\//\\\///Chameleon
C:\Windows\..\Users\..\Chameleon
\\localhost\C$\Chameleon
\\127.0.0.1\C$\Chameleon
\\?\C:\Chameleon
\\.\C:\Chameleon
\\.\UNC\localhost\C$\Chameleon
\\?\Volume{59e01a55-88c5-411e-bf0a-92820bdb2549}\Chameleon
\\.\GLOBALROOT\Device\HarddiskVolume4\Chameleon
…
这就是微软几十年来坚持完全向后兼容的政策所得到的结果!”