PowerShell でフルパスから以下のような情報を取得したいという場合の記述方法をまとめます。
- フォルダ名だけ取得したい
- 親フォルダのフルパスを取得したい
- 親フォルダ名を取得したい
フォルダ名や親フォルダ名・親フォルダパスを取得する
使用するコマンドは、Split-Path です。その名の通り、PATHを分割するコマンドなので、分割する区切り文字(デリミタ)を指定する必要もないです。
末端のフォルダ名・ファイル名だけを取得したい場合
引数として渡すフルパスから、末端のフォルダ名・ファイル名だけを取得したい場合、以下のように記述します。
1 2 3 4 5 |
PS > Split-Path D:\テスト1\テスト2 -Leaf テスト2 PS > Split-Path D:\テスト1\テスト2\ファイル.ps1 -Leaf ファイル.ps1 |
※フルパスはフォルダ・ファイルのどちらを渡しても、末端のフォルダ名・ファイル名を返す
親フォルダパスを取得したい場合
引数として渡すフルパスから、対象フォルダ・ファイルの親フォルダパスを取得したい場合、以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 |
PS > Split-Path D:\テスト1\テスト2 D:\テスト1 PS > Split-Path D:\テスト1\テスト2 -Parent D:\テスト1 PS > Split-Path D:\テスト1\テスト2\ファイル.ps1 D:\テスト1\テスト2 PS > Split-Path D:\テスト1\テスト2\ファイル.ps1 -Parent D:\テスト1\テスト2 |
※フルパスはフォルダ・ファイルのどちらを渡しても、親フォルダパスを返す
※「-Parent」は規定のパラメータのようなので、付けても付けなくてもよい
親フォルダ名を取得したい場合
引数として渡すフルパスから、対象フォルダ・ファイルの親フォルダ名を取得したい場合、以下のように記述します。※フォルダパスではなくフォルダ名です
1 2 3 4 5 6 |
PS > $i = Split-Path D:\テスト1\テスト2\ファイル.ps1 PS > $i D:\テスト1\テスト2 PS > Split-Path -Leaf $i テスト2 |
もしくは、書き方としては以下のほうがスタンダードですかね。
1 2 |
PS > $i | Split-Path -Leaf テスト2 |
以上です。
おまけ 絶対パスか相対パスかの判別
指定したパスを絶対パスか相対パスか判別できるようです。
※絶対パスの場合はTrueを返し、相対パスの場合は False を返す
1 2 3 4 5 |
PS > Split-Path D:\テスト1\テスト2\ファイル.ps1 -IsAbsolute True PS D:\テスト1\テスト2> Split-Path .\ファイル.ps1 -IsAbsolute False |
おまけ スクリプトファイルのフォルダパスやフォルダ名
スクリプトファイルを設置したフォルダのフォルダパスやフォルダ名、スクリプトファイル名を取得する方法は以下にまとめています。
-
【PowerShell】スクリプトのフォルダパスやファイル名を取得する
Powershellのスクリプトのファイル名とフォルダパスを取得する方法を説明します。 スクリプトの設置フォルダとファイル名のみとファイル名を含めたフルパスを取得できます。 スクリプトの設置フォルダを ...
↓↓↓ 持っていると便利な一冊 ↓↓↓