如何在 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 在综合系统脚本和自动化任务中的潜力。
