使用 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