使用 PowerShell 获取文件扩展名
-
在 PowerShell 中使用
Split-Path
获取文件扩展名 -
在 PowerShell 中使用
Get-ChildItem
Cmdlet 获取文件扩展名 -
在 PowerShell 中使用
.NET
框架获取文件扩展名
在处理 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn