Get-ChildItemで取得したファイル名(System.IO.FileSystemInfo)であれば、Basenameなどのメソッドにより簡単にファイル名などを取得することができますが、
文字列(String)に格納されたパスを分解するには、文字列操作が必要かな?と思うかもしれません。
しかし、今回紹介するSplit-Pathを使用することにより、文字列のパスを簡単に分解し取得することができます。
PS D:\work> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 0 10586 122
以下のオプションを紹介します。
オプション | 動作 |
-Leaf | ファイル名orディレクトリ名(最後の要素) |
-NoQualifier | ドライブ名を除く |
-Parent | 親フォルダ |
-Qualifier | ドライブレター |
オプション -Leaf により、最後の要素を取得することができます。
Split-Path -Leaf パス文字列
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt" PS D:\work> Split-Path -Leaf $path sakura.txt
PS D:\work> $path = "c:\foo\bar\hoge\sakura" PS D:\work> Split-Path -Leaf $path sakura PS D:\work> $path = "c:\foo\bar\hoge\sakura\" PS D:\work> Split-Path -Leaf $path sakura
オプション -NoQualifier により、最後の要素を取得することができます。
Split-Path -NoQualifier パス文字列
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt" PS D:\work> Split-Path -NoQualifier $path \foo\bar\hoge\sakura.txt
オプション -Parent により、親フォルダ名を取得することができます。
Split-Path -Parent パス文字列
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt" PS D:\work> Split-Path -Parent $path c:\foo\bar\hoge PS D:\work> Split-Path -Leaf $path sakura.txt
フォルダ名とファイル名を分割できているのが確認できます。
オプション -Qualifier にてドライブレターを取得することができます。
Split-Path -Qualifier パス文字列
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt" PS D:\work> Split-Path -Qualifier $path c:
以上、Split-Pathコマンドレットを使用して、パス文字列から各種要素を取得する方法でした。