PowerShell でファイルのフルパスを取得する方法

  1. Get-ChildItem を使用して PowerShell でファイルのフルパスを取得する
  2. Select-Object を使用して PowerShell でファイルのフルパスを取得する
  3. Format-Table を使用して PowerShell でファイルのフルパスを取得する
  4. foreach ループを使用して PowerShell でファイルのフルパスを取得する
  5. Format-List を使用して PowerShell でファイルのフルパスを取得する
  6. 結論
PowerShell でファイルのフルパスを取得する方法

PowerShell には、システム上のファイルを管理するためのさまざまなコマンドレットがあります。PowerShell を使用してファイルを作成、コピー、移動、名前変更、および削除できます。

また、ファイルを検索したり、PowerShell でファイルの存在を確認したりできます。ファイルパスは、システム上のファイルの場所を示します。

このチュートリアルでは、PowerShell でファイルのフルパスを取得するためのさまざまな方法を紹介します。

Get-ChildItem を使用して PowerShell でファイルのフルパスを取得する

Get-ChildItem コマンドレットは、指定された場所にあるファイルおよびディレクトリのリストを表示します。-Recurse パラメーターを使用すると、すべてのファイルとディレクトリを再帰的にリスト表示できます。

これにより、サブディレクトリとそのファイルも表示されます。これは、PowerShell での再帰的なファイル検索に役立ちます。

このアプローチは、フォルダー階層に広がるファイルのセットに対して操作を実行する必要があるシナリオで一般的に使用されます。たとえば、ファイルの検索、バッチ処理、またはデータの整理タスクなどです。

例:

Get-ChildItem -Path C:\ExampleDirectory -Filter *.txt -Recurse

最初に、-Path C:\ExampleDirectory を使用してルートディレクトリを指定します。この選択により、検索の出発点が設定され、正しい場所を探していることが確認できます。

次に、-Filter *.txt パラメーターを導入します。これは、.txt 拡張子を持つファイルのみを検索するために検索を大幅に絞り込むための戦略的な手段です。

これにより、無関係な多数のファイルを効率的にスキップし、スクリプトがより集中し、実行が迅速になります。

スクリプトの本当のゲームチェンジャーは -Recurse パラメーターです。これは、PowerShell のディレクトリ構造を深く掘り下げる能力を活用する場所です。

-Recurse を使用することで、私たちは C:\ExampleDirectory の表面をなでるだけでなく、すべての隅々やすべてのサブディレクトリを探索し、どれだけ深くネストされていても探索します。

出力:

PowerShell でファイルのフルパスを取得する - 出力 1

ファイルのフルパスを取得するには、コマンドを%{$_.FullName} にパイプして実行できます。

例:

Get-ChildItem -Path ExampleDirectory\ -Filter sample.txt -Recurse | % { $_.FullName }

出力:

PowerShell でファイルのフルパスを取得する - 出力 2

または、このコマンドを使用して、指定された場所にある .txt 拡張子を持つすべてのファイルとそのパスを取得できます。

例:

Get-ChildItem -Path ExampleDirectory\ -Recurse | where { $_.extension -eq ".txt" } | % { $_.FullName }

出力:

PowerShell でファイルのフルパスを取得する - 出力 3

Select-Object を使用して PowerShell でファイルのフルパスを取得する

同様の方法が使用されますが、ファイルのフルパスを取得するために Get-ChildItem コマンドとともに Select-Object コマンドレットを使用します。

Select-Object コマンドレットは、オブジェクトまたはオブジェクトのセットの指定されたプロパティを選択します。この技法は、ファイルシステムの監査、データ管理、またはクリーンアップ操作を行う必要があるシナリオで特に役立ちます。

例:

Get-ChildItem -Path ExampleDirectory\ -Filter *.txt -Recurse | Select-Object -ExpandProperty FullName

このスクリプトで、私たちは Get-ChildItemSelect-Object の組み合わせの力を利用して、.txt ファイルを効率的に見つけてリストします。ExampleDirectory\から検索を開始し、すべての関連サブディレクトリを含むことを保証します。

-Filter *.txt は重要なコンポーネントで、.txt ファイルにのみ焦点を絞ることができ、検索を合理化します。

-Recurse を使用することで、私たちは表面的な操作をするだけでなく、すべてのサブディレクトリの深い部分に掘り下げて、見落とされるファイルがないことを確認します。魔法は| Select-Object -ExpandProperty FullName で起こります。これにより、出力が必須の情報に絞られます—ファイルのフルパスのみを表示します。

出力:

PowerShell でファイルのフルパスを取得する - 出力 4

Format-Table を使用して PowerShell でファイルのフルパスを取得する

同様に、Format-Table を使用して PowerShell でファイルのフルパスを取得できます。Format-Table コマンドレットは、オブジェクトの選択されたプロパティを持つ出力をテーブル形式にフォーマットします。

Get-ChildItem コマンドレットは、Format-Table と組み合わせることで、ファイルパスを取得するだけでなく、整理された読みやすい形式で表示するための強力なツールになります。この方法は、ファイルシステムの構造を迅速に評価および報告する必要がある人々に特に便利です。

例:

Get-ChildItem -Path ExampleDirectory\ -Filter *.txt -Recurse | Format-Table FullName

このスクリプトでは、戦略的に Get-ChildItem を使用して、ExampleDirectory\とそのサブディレクトリをスキャンし、.txt ファイルを探しています。-Filter *.txt パラメーターは重要で、検索を対象に集中させて無関係なファイルタイプを無視するようにします。

-Recurse フラグは徹底的な検索に不可欠で、すべてのサブディレクトリが探索されることを保証します。

検索の後、| Format-Table FullName を使用して、私たちの発見を整理されたテーブルに変換します。これにより、読みやすさが向上し、フルパスの明確で構造的なビューを提供します。

出力:

PowerShell でファイルのフルパスを取得する - 出力 5

foreach ループを使用して PowerShell でファイルのフルパスを取得する

foreach ループは、PowerShell では foreach ステートメントとしても知られています。それは、配列、オブジェクト、文字列、数値などのコレクション内の一連の値をループするための言語構文です。

foreach ループ内の各アイテムに対して 1つ以上のコマンドを実行できます。

例:

Get-ChildItem -Path ExampleDirectory\*.txt -Recurse | foreach { "$_" }

このスクリプトでは、Get-ChildItem を使用して ExampleDirectory\内の .txt ファイルを綿密に検索します。

-Recurse を含めることで、すべてのサブディレクトリを網羅する包括的な検索が保証されます。遭遇した各ファイルは、次に foreach ループにパイプで送られます。

このループ内で、$_ は現在のファイルのプレースホルダーとして機能します。$_ を引用符で囲み、それを出力することで、PowerShell に各ファイルのフルパスを表示させるよう指示します。

このアプローチは、単にデータを取得するだけでなく、各ファイルを通しての体系的な散策であり、ループ内でより複雑な操作を追加する柔軟性を提供します。

出力:

PowerShell でファイルのフルパスを取得する - 出力 6

上記のコマンドは -Filter パラメーターでは機能しません。中間で Get-Item コマンドレットにパイプすることで、-Filter パラメーターを使用できます。

例:

Get-ChildItem -Path ExampleDirectory\ -Filter *.txt -Recurse | Get-Item | foreach { "$_" }

パイプラインで Get-Item を追加することは重要なステップであり、-Filter パラメーターを効果的に利用できるようにし、.txt ファイルのみが処理されることを保証します。

出力:

PowerShell でファイルのフルパスを取得する - 出力 7

Get-ChildItem には、lsdir、および gci の組み込みエイリアスがあります。上記のすべてのコマンドは、Get-ChildItem コマンドレットの代わりに任意のハンドルを使用して実行できます。

例:

gci -Path ExampleDirectory\ -Filter *.txt -Recurse | % { $_.FullName }

エイリアスを使用することで、このコマンドは大幅に簡潔になり、機能性を維持します。異なるバックグラウンド(Unix/Linux や古い Windows コマンドラインなど)から来ているユーザーには、lsdir の方がより親しみやすいと感じるかもしれません。

出力:

PowerShell でファイルのフルパスを取得する - 出力 8

Format-List を使用して PowerShell でファイルのフルパスを取得する

Get-ChildItem コマンドレットは、ファイルやディレクトリについての情報を参照および取得するために多用途です。-Filter パラメーターを使用することで、特定のタイプのファイル(たとえば .txt ファイル)を対象にすることができます。

一方、Format-List はオブジェクトのプロパティをリスト形式で表示します。Get-ChildItem と組み合わせることで、ファイルパスを明確で読みやすいリストとして表示するために利用できます。

例:

Get-ChildItem -Path ExampleDirectory\ -Filter *.txt -Recurse | Format-List FullName

私たちのコードでは、Get-ChildItem を使用して ExampleDirectory\とそのサブディレクトリ(-Recurse)内を徹底的に検索し、.txt 拡張子のファイル(-Filter *.txt)を探しています。発見された各ファイルは、パイプライン(|)を介して Format-List コマンドレットにシームレスに転送されます。

私たちは各ファイルの FullName プロパティを抽出することに焦点を当て、これがそのフルパスを表します。この方法は、ファイルパスの整理された読みやすいリストを作成するのに特に効果的です。

出力:

PowerShell でファイルのフルパスを取得する - 出力 9

結論

最後に、PowerShell は効率的なファイル管理のために豊富なコマンドレットを提供しています。この記事では、特に Get-ChildItem コマンドレットを他のコマンドレット(Format-ListSelect-ObjectFormat-Table など)と組み合わせて、ファイルのフルパスを取得するさまざまな方法を探りました。

これらの技法は、ファイルシステムの監査、データ管理、バッチ処理を含むタスクにおいて非常に貴重です。私たちが議論した各方法は、特定のファイルタイプをフィルターするためのものや、整形されたテーブルでパスをリストするもの、foreach ループでファイルを反復処理するためのものなど、ファイルパスを処理する独自のアプローチを提供します。

PowerShell の専門知識を深めようとしている読者にとって、次のステップは、より高度なファイル操作技術を探求し、オートメーションのための PowerShell スクリプティングを掘り下げたり、他のツールやスクリプトと PowerShell コマンドを統合して、より複雑なワークフローを実現することかもしれません。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - PowerShell File