【PowerShell】ファイルのフルパスを取得しテキストファイルに出力~パスに学ぶ~

どうも!リョクちゃです。

 

特定の拡張子を持ったファイルの取得についてはこちらの記事で触れました。

前回(https://dreamparadaisu.com/powershell_02/)学んだ、変数をより賢く使ってみようと思います。その中でPowerShellの強みでもあるファイル操作を理解しながら、変数に代入された情報をファイルとして出力することを例を使って紹介していきます。

 

このファイルがどこにあるかについての取得いわゆるフルパスの取得については

触れていなかったので、今回触れていきます。

 

ちなみに前回はこちら

配列については以前にも記事にしましたが、時に配列に一体何要素入っているのだろう?と調べたくなる時はないでしょうか?今回は配列内に含まれる要素の数を調べる方法と調べた際に気を付けておくべきことを紹介しています。

 

 

特定の拡張子を持ったファイルのフルパスを取得

スポンサーリンク




おさらい

おさらいとして、特定の拡張子を持ったファイルを取得するには、

以下のコマンドを使いました。

 

Get-ChildItem -Path -Filter

 

ファイルが保存されているパス内のサブフォルダも含めるなら

Get-ChildItem -Path -Filter -Recurse

–Recurseオプションを付け加えます。

 

例として、Cドライブのtestフォルダの.txtファイルを全て取得したい場合

このコマンドを実行すれば、Cドライブのtestフォルダを対象に、

サブフォルダを含むすべての.txtファイルを取得してくれます。

 

フルパスを取得

本題に戻り、フルパスを取得するには、先ほど同様のコマンドを使用します。

このコマンドをPowerShellで実行すると、以下のような結果が取得されます。

 

下図では対象フォルダをデスクトップ上にある、PowerShell_Testとしています。

このような結果が取得がされ、表示されます。

様々なパラメータが一度に取得されていることがわかります。

 

それでは、この結果からファイルのフルパスを取得するにはどうしたらいいでしょう?

以下のような記述をすることで取得ができます。

(Get-ChildItem -Path -Filter ).Fullname
これを先ほどのコマンドを用いて、実行してみます。

 

結果は以下のようになります。

ファイルのフルパスを取得することができました。

 

このコマンドを変数に格納することで、様々な処理が行えるようになりますね。

$変数名 = (Get-ChildItem -Path -Filter ).Fullname

※–Recurseは必要に応じて付けてください。

 

おまけ

ファイルのフルパスは、実は他の方法でも取得することができます。

 

コマンドレットを組み合わせて取得する方法

Get-ChildItem -Path -Filter | Select-Object Fullname

Select-Objectを組み合わせた方法になります。

 

Get-ChildItemで対象のファイルを対象のパスから取得し、

Select-ObjectでFullnameパラメータのみを取得するといった動作をしています。

 

この場合以下のような結果の取得になります。

 

変数に格納する場合は取得時の取扱いに注意が必要です。

例として、変数testに結果を格納し、foreach文で取り出してみます。

 

Resolve-Pathを使った方法

Get-ChildItem -Path -Filter | Resolve-Path
こちらはResolve-Pathを組み合わせた方法になります。

 

Get-ChildItemで対象のファイル検索結果を取得し、取得した結果から

対象のファイルのパスを取得するのがResolve-Pathになります。

パスの解決をしてくれる役割があります。

 

Select-Object同様、変数に格納する場合は取扱いに注意。

 

 

まとめ

ファイルのフルパスを取得する方法について紹介しました。

 

基本的にはGet-ChildItemコマンドを使用して、取得された結果に対して

コマンドを組み合わせることでフルパスを取得できる方法であったり、

Fullnameプロパティを使用することで簡単にフルパスの取得ができるなど、

状況に応じてコマンドを使用してみてください。

 

最後までお読みいただき、ありがとうございます。

 

 

スポンサーリンク