2017-07-17 10 views
1

ディレクトリを指す文字列変数があります。このディレクトリには、拡張子が.xyzの単一ファイルがあります。ファイル名自体を知らなくても、このファイルへのパスを取得する方法は?ディレクトリ内の特定の拡張子を持つファイルのみを取得する

私がこれまでに次のコードを持っている:

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

は、PowerShellで、この「進むべき道」となっていますか?より良い解決策はありますか?

答えて

2

は私がGet-ChildItemさん-includeパラメータを使用することをお勧めします。

Get-ChildItem $dir -include *.xyz

0

Powershellでパイプライン機能を使用すると、より効率的です。たとえば、Get-ChildItem "$dir" | Where-Object {$_.FullName -match ".xyz$"}

拡張子.xyzのファイルを取得します。ファイル以上のものがあれば、さらに絞り込むことができます。

+0

なぜですか? '-include'ははるかに良い – 4c74356b41

3

私はGet-ChildItem -FilterSelect-Object -Firstを使用します。

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

なぜこの答えは上記の' -include'よりも多くのupvotesを持っていますか? –

0

あなたはまた、PowerShellのバージョン5ではGet-Item -LiteralPath (Resolve-Path "$dir\*.xyz")

0

を試みることができる、あなたもこれを試すことができます。 Get-ChildItem $dir -Recurse -Include *.xyz

関連する問題