如何在 PowerShell 中從檔名中移除路徑和擴展名

PowerShell 支援處理系統中的各種檔案操作。你可以在 PowerShell 中執行創建、複製、移動、重新命名、編輯、刪除和檢視檔案等任務。
在 PowerShell 中有不同的 cmdlet,可以用來獲取檔案的名稱完整路徑和擴展名。當在系統中處理檔案時,你可能需要獲取不帶路徑和擴展名的檔名。
本教程將教你如何在 PowerShell 中從檔名中移除路徑和擴展名。
使用 BaseName
属性在 PowerShell 中從檔名中移除路徑和擴展名
PowerShell 中的 Get-Item
cmdlet 是一個多功能工具,用於檢索檔案系統中項目的屬性,例如檔案和目錄。其中一個屬性是 .BaseName
,這對我們的目的特別有用。
範例:
(Get-Item "sample.txt").BaseName
在這個範例中,腳本假設 sample.txt
是當前目錄中的一個檔案。如果該檔案在不同的目錄中,你應該包含完整路徑,如 C:\folder\sample.txt
。
當我們執行 (Get-Item "sample.txt").BaseName
時,PowerShell 執行了兩個關鍵操作。
首先,Get-Item "sample.txt"
獲取對應於 sample.txt
的檔案對象。然後,.BaseName
訪問該檔案對象的屬性,該屬性包含不帶擴展名的檔名。
輸出:
如果你想在多個檔案中移除路徑和擴展名,可以使用 Get-ChildItem
cmdlet。以下命令顯示如何在 PowerShell 中獲取多個沒有路徑和擴展名的檔名。
範例
(Get-ChildItem "*.txt").BaseName
這行代碼將列出指定目錄中所有 .txt
檔案的基本名稱(不帶擴展名的檔名)。
-
Get-ChildItem "*.txt"
:此命令從指定目錄獲取所有.txt
檔案。 -
.BaseName
:此屬性將對每個由Get-ChildItem
返回的檔案對象進行訪問,僅提取不帶擴展名的檔名。
輸出:
你也可以使用 System.IO.FileInfo
類別和 basename
屬性來獲取不帶擴展名的檔名。
System.IO.FileInfo
是一個 .NET
類,提供檔案的創建、複製、刪除、移動和打開的屬性和實例方法。它還提供有關檔案的詳細信息,例如其名稱、路徑、大小等。
範例:
([System.IO.FileInfo]"sample.txt").BaseName
這行代碼假設 sample.txt
是當前目錄中的一個檔案。如果該檔案在其他地方,應該指定完整路徑,例如 C:\path\to\sample.txt
。
在這個範例中,([System.IO.FileInfo]"sample.txt")
為檔案 sample.txt
創建了一個 FileInfo
對象。此對象包含有關檔案的詳細信息。
通過訪問此對象的 .BaseName
屬性,我們獲取到不帶擴展名的檔名。
輸出:
使用 System.IO.Path
類別在 PowerShell 中從檔名中移除路徑和擴展名
System.IO.Path
類別提供了許多用於檔案路徑字符串操作的方法。特別是 GetFileNameWithoutExtension
方法,用於從完整路徑字符串中獲取不帶擴展名的檔名。
範例:
[System.IO.Path]::GetFileNameWithoutExtension("sample.txt")
這個範例假設 sample.txt
是指沒有任何目錄路徑的檔名。如果該檔案位於其他目錄中,則應包括完整路徑,例如 "C:\folder\sample.txt"
。
[System.IO.Path]::GetFileNameWithoutExtension("sample.txt")
,PowerShell 利用 System.IO.Path
類別中的 GetFileNameWithoutExtension
方法來處理字符串 "sample.txt"
。此方法智能地解析字符串,識別檔案擴展名並移除它,只返回基本檔名。
這個方法是非常高效的,並不要求實際檔案存在,因為它純粹在字符串層面上操作。
輸出:
結論
總之,掌握 PowerShell 中的檔案操作對於高效的系統管理至關重要,本文集中於使用多樣的方法從檔名中移除路徑和擴展名。從簡單的 (Get-Item "sample.txt").BaseName
開始處理單個檔案,我們進步到使用 (Get-ChildItem "C:\Users\rhntm\*.txt").BaseName
處理多個檔案,這是一種處理批量操作的有價值的方法。
更加面向對象的 [System.IO.FileInfo]
類別與 ([System.IO.FileInfo]"sample.txt").BaseName
提供了詳細的檔案信息,而 [System.IO.Path]::GetFileNameWithoutExtension("sample.txt")
的字符串操作力量則展示了 .NET
類別的強大。這些方法例證了 PowerShell 的多功能性,對於那些尋求深入瞭解的人來說,探索相關主題如處理完整檔案路徑和提取檔案擴展名是一個合乎邏輯的發展,釋放 PowerShell 在全面系統腳本和自動化任務中的全部潛力。