如何使用 PowerShell 從路徑中提取檔案名稱

  1. 使用 Split-Path Cmdlet 從 PowerShell 的路徑中提取檔案名稱
  2. 使用 .NET 的 Path 類方法從 PowerShell 的路徑中提取檔案名稱
  3. 使用 Get-ItemGet-ChildItem Cmdlet 從 PowerShell 的路徑中提取檔案名稱
  4. 使用正則表達式從 PowerShell 的路徑中提取檔案名稱
  5. 使用字串操作從 PowerShell 的路徑中提取檔案名稱
  6. 使用 System.IO.FileInfo 類從 PowerShell 的路徑中提取檔案名稱
  7. 結論
如何使用 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-ItemGet-ChildItem Cmdlet 從 PowerShell 的路徑中提取檔案名稱

在 PowerShell 中,Get-ItemGet-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-ObjectSystem.IO.FileInfo 類創建一個 FileInfo 對象,這樣可以訪問與檔案相關的屬性和方法。

  • $fileInfo = New-Object System.IO.FileInfo $path:這行代碼根據提供的路徑構造一個 FileInfo 對象。

接下來,我們利用 FileInfo 對象的 Name 屬性來提取檔案名稱。

  • $filename = $fileInfo.Name:在這裡,我們通過訪問 FileInfo 對象的 Name 屬性來檢索檔案名稱。

結論

在本教程中,我們探索了從 PowerShell 路徑中提取檔案名稱的各種方法。從使用內建的 cmdlet 如 Split-Path 到使用正則表達式和字串操作,您可以根據自己的具體需求選擇不同的選項。

了解這些技術將提升您處理檔案路徑和提取必需檔案信息的能力。無論您偏好內建 cmdlet 的簡單性還是正則表達式的多樣性,PowerShell 提供了一套強大的工具來有效地操控檔案。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell File