このエントリーをはてなブックマークに追加


Stringオブジェクトのパス文字列を分解する方法・Split-Path

Get-ChildItemで取得したファイル名(System.IO.FileSystemInfo)であれば、Basenameなどのメソッドにより簡単にファイル名などを取得することができますが、
文字列(String)に格納されたパスを分解するには、文字列操作が必要かな?と思うかもしれません。
しかし、今回紹介するSplit-Pathを使用することにより、文字列のパスを簡単に分解し取得することができます。


動作確認のバージョン

PS D:\work> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  122

関連記事

紹介する Split-Path のオプション

以下のオプションを紹介します。

オプション動作
-Leafファイル名orディレクトリ名(最後の要素)
-NoQualifierドライブ名を除く
-Parent親フォルダ
-Qualifierドライブレター

ファイル名またはフォルダ名を取得する -Leaf

オプション -Leaf により、最後の要素を取得することができます。

Split-Path -Leaf パス文字列

-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

オプション -NoQualifier により、最後の要素を取得することができます。

Split-Path -NoQualifier パス文字列

-NoQualifier 実行例

PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt"
PS D:\work> Split-Path -NoQualifier $path
\foo\bar\hoge\sakura.txt

親フォルダ名の取得 -Parent

オプション -Parent により、親フォルダ名を取得することができます。

Split-Path -Parent パス文字列

-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

オプション -Qualifier にてドライブレターを取得することができます。

Split-Path -Qualifier パス文字列

-Qualifier 実行例

PS D:\work> $path = "c:\foo\bar\hoge\sakura.txt"
PS D:\work> Split-Path -Qualifier $path
c:

以上、Split-Pathコマンドレットを使用して、パス文字列から各種要素を取得する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-30 (金) 23:34:06