使用 PowerShell 獲取副檔名

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. 在 PowerShell 中使用 Split-Path 獲取副檔名
  2. 在 PowerShell 中使用 Get-ChildItem Cmdlet 獲取副檔名
  3. 在 PowerShell 中使用 .NET 框架獲取副檔名
使用 PowerShell 獲取副檔名

在處理 PowerShell 指令碼時,通常需要從完整路徑中提取檔名。例如,你的指令碼收到了完整的檔案路徑,而你只想獲取副檔名。

本文將討論幾種使用 PowerShell 指令碼的檔案擴充套件方法。

在 PowerShell 中使用 Split-Path 獲取副檔名

要從檔名中分離副檔名,我們可以使用 -Leaf 引數來指示我們將在哪裡提取副檔名。葉是路徑的最後一個元素或一部分。

$filePath = "C:\temp\subfolder\File1.txt";
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1];
Write-Output $extension

輸出:

txt

你可能會注意到,在我們的程式碼片段中,我們呼叫了 Split() 函式來拆分提供的路徑。

我們使用點 . 作為分隔符,因為檔名和副檔名由點分隔符分隔。然後我們將儲存的擴充套件值稱為陣列 [1]

嘗試呼叫陣列 [0],你將獲得路徑的檔名。

示例程式碼:

(Split-Path -Path $filePath -Leaf).Split(".")[0];

輸出:

File1

由於我們使用點字元作為分隔符,因此此方法僅在你的檔名不包含任何其他點時才有效。請記住,點字元可以在檔名中。

在 PowerShell 中使用 Get-ChildItem Cmdlet 獲取副檔名

Get-ChildItem 命令在一個或多個指定位置獲取專案。例如,如果物件是一個容器,它會獲取該容器內的東西,稱為子項。

位置可以是檔案系統,例如目錄,也可以是由不同的 Windows PowerShell 提供程式公開的站點。Get-ChildItem 命令獲取檔案系統驅動器中的目錄、子目錄和檔案。

由於 Get-ChildItem cmdlet 處理檔案,它有一個 PowerShell 屬性屬性,我們可以匯出該屬性以獲取查詢檔案的副檔名。

Split-Path cmdlet 不同,即使檔名中有點字元,此方法也可以正確傳送副檔名。

示例程式碼:

Get-ChildItem 'C:\temp\file.1.txt' | Select Extension

輸出:

Extension
---------
.txt

在 PowerShell 中使用 .NET 框架獲取副檔名

以下方法基於 .NET 框架類。儘管通常不鼓勵在 PowerShell 指令碼上使用 .NET 框架類,尤其是在本機 PowerShell 命令可用的情況下,但它可能適合此特定用例。

在下面的示例中,如果給定檔名,我們將使用 System.IO.Path 類中的 GetExtension 靜態方法:

示例程式碼:

[System.IO.Path]::GetExtension("File1.txt")

輸出:

.txt

如果我們想獲取檔名,我們也可以使用 GetFileNameWithoutExtension 靜態方法。

示例程式碼:

[System.IO.Path]::GetFileNameWithoutExtension("File1.txt")

輸出:

File1
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell File