どうも!リョクちゃです。
特定の拡張子を持ったファイルの取得についてはこちらの記事で触れました。
このファイルがどこにあるかについての取得いわゆるフルパスの取得については
触れていなかったので、今回触れていきます。
ちなみに前回はこちら
目次
特定の拡張子を持ったファイルのフルパスを取得
おさらい
おさらいとして、特定の拡張子を持ったファイルを取得するには、
以下のコマンドを使いました。
ファイルが保存されているパス内のサブフォルダも含めるなら
–Recurseオプションを付け加えます。
例として、Cドライブのtestフォルダの.txtファイルを全て取得したい場合
1 |
Get-ChildItem -Path "C:\test" -Filter *.txt -Recurse |
このコマンドを実行すれば、Cドライブのtestフォルダを対象に、
サブフォルダを含むすべての.txtファイルを取得してくれます。
フルパスを取得
本題に戻り、フルパスを取得するには、先ほど同様のコマンドを使用します。
1 |
Get-ChildItem -Path "C:test" -Filter *.txt -Recurse |
このコマンドをPowerShellで実行すると、以下のような結果が取得されます。
下図では対象フォルダをデスクトップ上にある、PowerShell_Testとしています。
このような結果が取得がされ、表示されます。
様々なパラメータが一度に取得されていることがわかります。
それでは、この結果からファイルのフルパスを取得するにはどうしたらいいでしょう?
以下のような記述をすることで取得ができます。
1 |
(Get-ChildItem -Path "C:\test" -Filter *.txt -Recurse).Fullname |
結果は以下のようになります。
ファイルのフルパスを取得することができました。
このコマンドを変数に格納することで、様々な処理が行えるようになりますね。
※–Recurseは必要に応じて付けてください。
おまけ
ファイルのフルパスは、実は他の方法でも取得することができます。
コマンドレットを組み合わせて取得する方法
Select-Objectを組み合わせた方法になります。
Get-ChildItemで対象のファイルを対象のパスから取得し、
Select-ObjectでFullnameパラメータのみを取得するといった動作をしています。
この場合以下のような結果の取得になります。
変数に格納する場合は取得時の取扱いに注意が必要です。
例として、変数testに結果を格納し、foreach文で取り出してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$test = Get-ChildItem -Path "C:\test" -Filter *.txt -Recurse | Select-Object Fullname foreach ($i in $test) { Write-Host $i } # 出力結果 # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\001.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_02\test.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_02\test_2.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_02\test_3.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_04\test.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_04\test_2.txt} # @{FullName=C:\Users\<ユーザー名>\Desktop\PowerShell_Test\test_04\test_3.txt} |
Resolve-Pathを使った方法
Get-ChildItemで対象のファイル検索結果を取得し、取得した結果から
対象のファイルのパスを取得するのがResolve-Pathになります。
パスの解決をしてくれる役割があります。
まとめ
ファイルのフルパスを取得する方法について紹介しました。
基本的にはGet-ChildItemコマンドを使用して、取得された結果に対して
コマンドを組み合わせることでフルパスを取得できる方法であったり、
Fullnameプロパティを使用することで簡単にフルパスの取得ができるなど、
状況に応じてコマンドを使用してみてください。
最後までお読みいただき、ありがとうございます。