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