HOWTO · PowerShell

如何在 PowerShell 中从文件名中移除路径和扩展名

本教程将介绍在 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 访问此文件对象的属性,该属性包含没有扩展名的文件名。

输出:

在 PowerShell 中从文件名中移除路径和扩展名 - 输出 1

如果您想在多个文件中移除路径和扩展名,可以使用 Get-ChildItem cmdlet。以下命令显示如何在 PowerShell 中获取多个没有路径和扩展名的文件名。

示例

(Get-ChildItem "*.txt").BaseName

该行代码将列出指定目录中所有 .txt 文件的基础名称(没有扩展名的文件名)。

  • Get-ChildItem "*.txt":这个命令从指定目录中获取所有 .txt 文件。

  • .BaseName:此属性被访问以获取每个由 Get-ChildItem 返回的文件对象,仅提取没有扩展名的文件名。

输出:

在 PowerShell 中从文件名中移除路径和扩展名 - 输出 2

您也可以使用 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 属性,我们可以检索没有扩展名的文件名。

输出:

在 PowerShell 中删除文件名中的路径和扩展名 - 输出 3

使用 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 中从文件名中移除路径和扩展名 - 输出 4

结论

总之,掌握 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 在综合系统脚本和自动化任务中的潜力。