仅获取目录中具有给定扩展名的文件
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 -Filter
和 Select-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'
我有一个指向目录的字符串变量。此目录中有一个扩展名为 .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 -Filter
和 Select-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'