#navi(../)
* Stringオブジェクトのパス文字列を分解する方法・Split-Path [#nd86b147]
Get-ChildItemで取得したファイル名(System.IO.FileSystemInfo)であれば、Basenameなどのメソッドにより簡単にファイル名などを取得することができますが、~
文字列(String)に格納されたパスを分解するには、文字列操作が必要かな?と思うかもしれません。~
しかし、今回紹介する''Split-Path''を使用することにより、文字列のパスを簡単に分解し取得することができます。
#contents
#htmlinsertpcsp(win-top.html,win-sp.html)
* 動作確認のバージョン [#b365a232]
PS D:\work> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 0 10586 122
* 関連記事 [#k4f43cde]
-[[ファイル・フォルダの存在チェック・Test-Path>PowerShell/ファイル・フォルダの存在チェック・Test-Path]]
-[[相対パスからフルパスを取得する・Convert-Path>PowerShell/相対パスからフルパスを取得する・Convert-Path]]
-[[パス文字列の結合・Join-Path>PowerShell/パス文字列の結合・Join-Path]]
* 紹介する Split-Path のオプション [#l1fdc117]
以下のオプションを紹介します。
|オプション|動作|
|-Leaf|ファイル名orディレクトリ名(最後の要素)|
|-NoQualifier|ドライブ名を除く|
|-Parent|親フォルダ|
|-Qualifier|ドライブレター|
* ファイル名またはフォルダ名を取得する -Leaf [#k2d275b5]
オプション -Leaf により、最後の要素を取得することができます。
Split-Path -Leaf パス文字列
** -Leaf 実行例 [#o07f5572]
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 [#oaf5f773]
オプション -NoQualifier により、最後の要素を取得することができます。
Split-Path -NoQualifier パス文字列
** -NoQualifier 実行例 [#o9ae2795]
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt"
PS D:\work> Split-Path -NoQualifier $path
\foo\bar\hoge\sakura.txt
* 親フォルダ名の取得 -Parent [#m6aab7f3]
オプション -Parent により、親フォルダ名を取得することができます。
Split-Path -Parent パス文字列
** -Parent 実行例 [#y3eeed20]
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 [#a7c06b6f]
オプション -Qualifier にてドライブレターを取得することができます。
Split-Path -Qualifier パス文字列
** -Qualifier 実行例 [#hd45a38f]
PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt"
PS D:\work> Split-Path -Qualifier $path
c:
以上、Split-Pathコマンドレットを使用して、パス文字列から各種要素を取得する方法でした。
#htmlinsertpcsp(win-btm.html,win-sp.html)