如何使用 PowerShell 從路徑中提取檔案名稱
-
使用
Split-Path
Cmdlet 從 PowerShell 的路徑中提取檔案名稱 - 使用 .NET 的 Path 類方法從 PowerShell 的路徑中提取檔案名稱
-
使用
Get-Item
和Get-ChildItem
Cmdlet 從 PowerShell 的路徑中提取檔案名稱 - 使用正則表達式從 PowerShell 的路徑中提取檔案名稱
- 使用字串操作從 PowerShell 的路徑中提取檔案名稱
-
使用
System.IO.FileInfo
類從 PowerShell 的路徑中提取檔案名稱 - 結論

檔案路徑告訴系統中檔案的位置。在 PowerShell 中處理檔案時,您可能需要僅從路徑中獲取檔案名稱。
在 PowerShell 中有多種方法來獲取檔案的路徑。本教程將教您如何使用 PowerShell 從檔案路徑中提取檔案名稱。
使用 Split-Path
Cmdlet 從 PowerShell 的路徑中提取檔案名稱
在 PowerShell 中,Split-Path
cmdlet 是一個方便的工具,可用於隔離給定路徑的特定部分。無論是父資料夾、子資料夾、檔案名稱還是檔案擴展名,Split-Path
允許您針對這些元素進行定位和顯示。
提取帶擴展名的檔案名稱
要從路徑中捕獲帶擴展名的檔案名稱,您可以使用帶有 -Leaf
參數的 Split-Path
命令:
Split-Path C:\pc\test_folder\hello.txt -Leaf
輸出:
hello.txt
獲得不帶擴展名的檔案名稱
在您需要不帶擴展名的檔案名稱的情況下,-LeafBase
參數非常有用。但是,重要的是要注意此參數在 PowerShell 版本 6.0 及以後的版本中可用:
Split-Path C:\pc\test_folder\hello.txt -LeafBase
輸出:
hello
使用 .NET 的 Path 類方法從 PowerShell 的路徑中提取檔案名稱
在 .NET 中,Path
類提供有用的方法,可輕鬆從指定路徑中提取檔案名稱和擴展名。讓我們通過示例來探索這些功能。
使用 GetFileName
提取帶擴展名的檔案名稱
Path
類的 GetFileName
方法從給定路徑中檢索檔案名稱及其擴展名。讓我們用路徑 C:\pc\test_folder\hello.txt
來演示這一點:
[System.IO.Path]::GetFileName('C:\pc\test_folder\hello.txt')
輸出:
hello.txt
使用 GetFileNameWithoutExtension
獲得不帶擴展名的檔案名稱
要僅提取不帶擴展名的檔案名稱,您可以使用 GetFileNameWithoutExtension
方法。這在您需要檔案本身的名稱而不包括檔案類型時特別有用:
[System.IO.Path]::GetFileNameWithoutExtension('C:\pc\test_folder\hello.txt')
輸出:
hello
使用 Get-Item
和 Get-ChildItem
Cmdlet 從 PowerShell 的路徑中提取檔案名稱
在 PowerShell 中,Get-Item
和 Get-ChildItem
cmdlet 是處理檔案和目錄的基本工具,允許您提取有關給定位置項目的特定信息。
讓我們看看如何使用這些 cmdlet 從給定路徑中提取檔案名稱,包括獲得帶擴展名或不帶擴展名的變體。
使用 Get-Item
提取帶擴展名的檔案名稱
Get-Item
cmdlet 檢索有關指定項目的詳細信息,包括其目錄、模式、最後寫入時間、長度和名稱。要提取帶擴展名的檔案名稱,您可以將 .Name
屬性與 Get-Item
結合使用。
讓我們用特定路徑 C:\pc\test_folder\hello.txt
來演示這一點:
(Get-Item C:\pc\test_folder\hello.txt).Name
輸出:
hello.txt
使用 Get-Item
獲得不帶擴展名的檔案名稱
如果您需要僅提取不帶擴展名的檔案名稱,您可以利用 .BaseName
屬性與 Get-Item
結合使用。這樣可以讓您從提供的路徑中孤立出檔案名稱:
(Get-Item C:\pc\test_folder\hello.txt).BaseName
輸出:
hello
使用 Get-ChildItem
應用方法
此方法也適用於使用 Get-ChildItem
cmdlet,它檢索指定位置中項目的信息。以下是如何使用它提取帶擴展名或不帶擴展名的檔案名稱:
(Get-ChildItem C:\pc\test_folder\hello.txt).Name
(Get-ChildItem C:\pc\test_folder\hello.txt).BaseName
輸出:
hello.txt
hello
使用正則表達式從 PowerShell 的路徑中提取檔案名稱
正則表達式也可用於從 PowerShell 的路徑中提取檔案名稱。在 .NET 中,Regex
類提供了強大的模式匹配和操作工具。
讓我們看看這是如何工作的:
# Define the path
$path = "C:\pc\test_folder\hello.txt"
# Use regular expression to extract the filename
$filename = [System.Text.RegularExpressions.Regex]::Match($path, '\\([^\\]+)$').Groups[1].Value
$filename
輸出:
hello.txt
在這個例子中,我們使用正則表達式捕獲最後一個反斜杠後的文本,這表示帶有擴展名的檔案名稱。
正則表達式 '\\([^\\]+)$'
可以分解如下:
\\
:匹配路徑中的反斜杠。([^\\]+)
:捕獲不為反斜杠的一個或多個字符(表示帶擴展名的檔案名稱),位於捕獲組內。$
:指定匹配應發生在字符串的末尾。
通過使用 Regex
類的 Match
方法,我們將正則表達式應用於路徑。
結果匹配包含帶擴展名的檔案名稱。我們可以通過 Groups[1].Value
訪問它以提取所需的檔案名稱。
使用字串操作從 PowerShell 的路徑中提取檔案名稱
也可以使用字串操作技術從路徑中提取檔案名稱。例如,您可以使用 LastIndexOf
方法來查找反斜杠的最後一次出現,並相應地提取檔案名稱。
# Define the path
$path = "C:\pc\test_folder\hello.txt"
# Find the index of the last backslash
$lastBackslashIndex = $path.LastIndexOf("\") + 1
# Extract the filename
$filename = $path.Substring($lastBackslashIndex)
$filename
輸出:
hello.txt
在這裡,我們利用 LastIndexOf
方法確定路徑中反斜杠(\
)的最後一次出現的索引,基本上確定檔案名稱開始的位置。
$lastBackslashIndex = $path.LastIndexOf("\") + 1
:這行計算最後一個反斜杠的索引並加上1
以確保我們開始在反斜杠之後提取字符。
接下來,我們利用 Substring
方法提取檔案名稱,從最後一個反斜杠之後的索引開始,直到字符串的結尾。
$filename = $path.Substring($lastBackslashIndex)
:在這裡,我們通過利用Substring
和計算的索引來提取檔案名稱。
使用 System.IO.FileInfo
類從 PowerShell 的路徑中提取檔案名稱
System.IO.FileInfo
類提供了訪問檔案信息的屬性,包括檔案名稱。我們可以創建一個 FileInfo
對象,然後訪問 Name
屬性以獲取檔案名稱。
# Define the path
$path = "C:\pc\test_folder\hello.txt"
# Create a FileInfo object
$fileInfo = New-Object System.IO.FileInfo $path
# Extract the filename
$filename = $fileInfo.Name
$filename
輸出:
hello.txt
在這個例子中,我們使用 New-Object
和 System.IO.FileInfo
類創建一個 FileInfo
對象,這樣可以訪問與檔案相關的屬性和方法。
$fileInfo = New-Object System.IO.FileInfo $path
:這行代碼根據提供的路徑構造一個FileInfo
對象。
接下來,我們利用 FileInfo
對象的 Name
屬性來提取檔案名稱。
$filename = $fileInfo.Name
:在這裡,我們通過訪問FileInfo
對象的Name
屬性來檢索檔案名稱。
結論
在本教程中,我們探索了從 PowerShell 路徑中提取檔案名稱的各種方法。從使用內建的 cmdlet 如 Split-Path
到使用正則表達式和字串操作,您可以根據自己的具體需求選擇不同的選項。
了解這些技術將提升您處理檔案路徑和提取必需檔案信息的能力。無論您偏好內建 cmdlet 的簡單性還是正則表達式的多樣性,PowerShell 提供了一套強大的工具來有效地操控檔案。