about_Path_Syntax
簡短描述
描述 PowerShell 中的完整和相對路徑格式。
詳細描述
數據存放區中的所有專案都可以透過PowerShell提供者存取,透過其路徑名稱來唯一識別。 路徑是專案名稱、專案所在的容器和子容器,以及存取容器的PowerShell磁碟驅動器的組合。
在 PowerShell 中,路徑名稱可以是兩種類型之一: 完整 和 相對。 完整路徑包含組成路徑的所有元素。 下列語法顯示完整路徑中的元素:
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
佔 <provider>
位元是指您用來存取數據存放區的 PowerShell 提供者。 例如,FileSystem 提供者可讓您存取電腦上的檔案和目錄。 語法的這個元素是選擇性的,而且絕對不需要,因為磁碟驅動器名稱在所有提供者中都是唯一的。
佔 <drive>
位元是指特定 PowerShell 提供者支援的 PowerShell 磁碟驅動器。 在 FileSystem 提供者的情況下,PowerShell 磁碟驅動器會對應至系統上設定的 Windows 磁碟驅動器。
例如,如果您的系統包含 A:
磁碟驅動器和 C:
磁碟驅動器,FileSystem 提供者會在 PowerShell 中建立相同的磁碟驅動器。
指定磁碟驅動器之後,您必須指定包含專案的任何容器和子容器。 容器必須以存在於數據存放區中的階層式順序來指定。 換句話說,您必須從父容器開始,然後從該父容器中的子容器開始,重複每個子容器的模式。 此外,每個容器前面都必須加上反斜杠。
注意
PowerShell 可讓您使用反斜杠或正斜線與其他平臺上的 PowerShell 相容。 這適用於 PowerShell 命令,但不適用於只預期原生目錄分隔符的原生應用程式。 用來 [System.IO.Path]::DirectorySeparatorChar
尋找平臺所使用的字元。
指定容器和子容器之後,您必須提供專案名稱,前面加上反斜杠。 例如,目錄中檔案的完整路徑名稱Shell.dll
C:\Windows\System32
如下所示:
C:\Windows\System32\Shell.dll
在這裡情況下,存取容器的磁碟驅動器是 C:
磁碟驅動器、最上層容器為 Windows
、子容器為 System32
,而專案為 Shell.dll
。
在某些情況下,您不需要指定完整路徑,而是可以使用相對路徑。 PowerShell 可讓您根據專案相對於目前工作位置的位置來識別專案。
PowerShell 會使用下列字元序列來指定相對路徑。
- (
.
) - 目前位置 - (
..
) - 目前位置的父系 - (
\
) - 目前位置的根目錄
下列範例是以目前的工作目錄設定為 C:\Windows
基礎。
- 相對路徑
.\System
會解析為C:\Windows\System
- 相對路徑
..\Program Files
會解析為C:\Program Files
- 相對路徑
\Program Files
會解析為C:\Program Files
- 相對路徑
System
會解析為C:\Windows\System
在命令中使用路徑時,您可以使用完整路徑或相對路徑。 例如,假設您目前的工作目錄是 C:\Windows
。 下列 Get-ChildItem
命令會擷取目錄中的所有專案 C:\TechDocs
:
Get-ChildItem \TechDocs
反斜杠表示應該使用目前工作位置的磁碟驅動器根目錄。 因為工作目錄是 C:\Windows
,磁碟驅動器根目錄是 C:
磁碟驅動器。 TechDocs
因為目錄位於根目錄外,因此您只需要指定反斜杠。
您可以使用完整路徑來取得相同的結果:
Get-ChildItem C:\TechDocs
不論您是否使用完整路徑或相對路徑名稱,路徑都很重要,不僅因為它找到專案,而且因為它可唯一識別專案,即使該專案與不同容器中的另一個項目共用相同的名稱也一樣。
例如,假設您有兩個名為 的檔案 Results.txt
。 第一個檔案位於名為 C:\TechDocs\Jan
的目錄中,而第二個檔案位於名為 的 C:\TechDocs\Feb
目錄中。 第一個檔案的路徑 (C:\TechDocs\Jan\Results.txt
) 和第二個檔案的路徑 (C:\TechDocs\Feb\Results.txt
) 可讓您清楚區分這兩個檔案。
支援 Win32 檔案命名空間
在 Windows 上,支援 FileSystem 提供者的 Cmdlet 也支援使用 Win32 檔案命名空間格式的路徑。 您只能搭配 Cmdlet 的 LiteralPath 參數使用這些路徑。
Win32 檔案命名空間中的路徑前面會加上 \\?\
。 前置詞會告知 Windows API 停用所有字串剖析,並將緊接著的字串直接傳送至文件系統。 例如,如果文件系統支援大型路徑和檔名,您可以超過 Windows API 所強制執行的MAX_PATH 限制。
如需詳細資訊,請參閱命名檔案、路徑和命名空間中的 Win32 檔案命名空間。