HOWTO · PowerShell

PowerShell でパスを結合して 2つ以上の文字列をファイルパスにする方法

このチュートリアルでは、Join-Path を使用して 2つ以上の文字列をファイルパスに結合する方法を教えます。

このページの内容

Join-Path コマンドレットは、ユーザーが文字列を単一のパスに結合することを許可します。PowerShell で作業する際に、単一のパスを作成するためにパスを結合する必要がある場合があります。

ここで Join-Path コマンドレットが機能します。多くの子パスは主パスに結合または追加して、単一のパスを作成できます。

-Path パラメーターは、子パスが追加される主パスを指定します。-Path 値は、どのプロバイダーがパスを結合し、パスの区切り文字を追加するかを決定します。

パスを結合するために \ 区切り文字を提供します。-ChildPath パラメーターは、-Path パラメーターの値に追加するパスを指定します。

例えば、以下のコマンドは Join-Path を使用して、主パス hello と子パス world を結合します。

Join-Path -Path "hello" -ChildPath "world"

出力:

パワーシェルパスを結合 - 出力 1

Join-Path コマンドレットは、2つの文字列入力または 1つの -ChildPath パラメーターのみを受け入れます。単一のコマンドを使用して、Join-Path を使って 2つより多くの文字列をファイルパスに結合することはできません。

PowerShell で 2つより多くの文字列をファイルパスに結合するには、複数の Join-Path ステートメントを組み合わせて使用する必要があります。

PowerShell で Join-Path の値を使用して 2つより多くの文字列をファイルパスに結合する

Join-Path パス値はパイプに送信できるため、複数の Join-Path ステートメントをパイプでつなげて 2つより多くの文字列をファイルパスに結合できます。

例えば、以下のコードはすべての 4つの文字列を結合し、単一のパス C:\content\software\PowerShell を作成します。

Join-Path -Path "C:" -ChildPath "content" | Join-Path -ChildPath "software" | Join-Path -ChildPath "PowerShell"

このコードスニペットでは、Join-Path コマンドレットを複数回使用して徐々にファイルパスを構築しています。各 Join-Path の呼び出しで、現在のパスを取り、別のセグメントを追加して拡張しています。

これは、各 Join-Path 操作の出力を次の操作にパイプすることによって行われ、最終的なファイルパスを部分ごとに構築しています。ここで -ChildPath パラメーターが重要であり、既存のパスに追加する追加セグメントを指定します。

結果として、このコードは基本パス C: とその後の文字列 content、software、PowerShell を結合することによって完全なファイルパスを作成します。

出力:

パワーシェルパスを結合 - 出力 2

PowerShell で子パスとともに複数のファイルパスを結合する

複数のパスを子パスと結合する主な目的は、PowerShell で完全修飾ファイルパスを作成することです。複数のパスを子パスと結合する方法を理解することで、効率的に動的にファイルパスを構築し、PowerShell スクリプトの柔軟性と可読性を向上させることができます。

Join-Path -Path "Path1\", "Path2\" -ChildPath "Folder\File.txt"

このコードスニペットでは、Join-Path コマンドレットを使用して 2つのパス(Path1 と Path2)を子パス(Folder\File.txt)で結合しています。-Path パラメーターを介してルートパスの配列を渡し、-ChildPath で子パスを指定することによって、完全修飾ファイルパスを作成しています。

その結果、出力は提供された子パスと各パスを組み合わせることによって形成された完全なファイルパスを示します。この方法は、複数のパスを単一のファイルパスに統合する簡単な方法を提供し、PowerShell スクリプトの多様性を高めます。

出力:

powershell パスを結合 - 出力 3

PowerShell でファイルシステムドライブのルートを子パスと結合する

複数のパスルートと子パスを扱う場合、Join-Path コマンドレットは、配列入力および -ChildPath パラメーターと組み合わせて、異なるパスコンポーネントを効率的に結合して一貫したファイルパスを作成する方法を提供します。

Get-PSDrive コマンドレットの文脈では、-PSProvider パラメーターは、所属するプロバイダーに基づいてドライブをフィルタリングします。

Get-PSDrive -PSProvider filesystem | ForEach-Object { $_.root } | Join-Path -ChildPath "SubFolder"

このコードスニペットでは、Get-PSDrive コマンドレットを使用してすべてのファイルシステムドライブのルートパスを取得しています。その後、結果を ForEach-Object にパイプして、各ルートパスを抽出しています。

これらのルートパスは、その後、子パス SubFolder とともに Join-Path に渡されます。Join-Path コマンドレットは、各ルートパスと子パスを組み合わせて、完全修飾ファイルパスを作成します。

この方法により、システムで現在アクセス可能なドライブのルートパスに基づいて動的にファイルパスを生成できます。

出力:

パワーシェルパスを結合する - 出力 4

結論

結論として、PowerShell の Join-Path コマンドレットは、文字列を単一のファイルパスに結合するための貴重なツールとして機能します。通常、2つの文字列入力または 1つの -ChildPath パラメーターのみを受け入れますが、複数の Join-Path ステートメントを連結することでこの制限を克服できます。

この記事では、Join-Path を使用して複数の文字列をファイルパスに結合するさまざまな方法について探りました。コマンドレットを連続して複数回使用したり、1つの Join-Path 操作の出力を別のものにパイプしたりする方法です。これらのテクニックを理解することで、異なるシナリオや要件に基づいて動的にファイルパスを構築することができます。