仅获取目录中具有给定扩展名的文件

Get only file with given extension in directory

我有一个指向目录的字符串变量。此目录中有一个扩展名为 .xyz 的文件。如何在不知道文件名本身的情况下获取此文件的路径?

到目前为止我有以下代码:

$dir = "C:\Temp\MyDir"
$xyzFiles = @(Get-ChildItem "$dir\*.xyz")
$file = $xyzFiles[0]

这是 PowerShell 中的 "the way to go" 吗?有更好的解决方案吗?

您可以使用 Powershell 中的管道功能来提高效率。例如Get-ChildItem "$dir" | Where-Object {$_.FullName -match ".xyz$"}

这将抓取一个扩展名为 .xyz 的文件。如果您有多个文件,您可以进一步缩小范围。

我会使用 Get-ChildItem -FilterSelect-Object -First:

$filepath = Get-ChildItem -Path $dir -Filter *.xyz |Select -First 1

我建议使用 Get-ChildItem-include 参数。

Get-ChildItem $dir -include *.xyz

你也可以试试 Get-Item -LiteralPath (Resolve-Path "$dir\*.xyz")

在 powerShell 版本 5 中,您也可以试试这个: Get-ChildItem $dir -Recurse -Include *.xyz

这应该有效:

Get-ChildItem $dir -File | Where-Object { $_.Extension -eq ".xyz" }

Simplest solution:

Get-ChildItem $dir -File '*.xyz'