web-dev-qa-db-ja.com

Powershellで親の親ディレクトリを取得する方法は?

したがって、変数にディレクトリが保存されている場合、次のように言います。

$scriptPath = (Get-ScriptDirectory);

今、ディレクトリを見つけたいと思いますtwo親レベルアップ。

素敵な方法が必要です:

$parentPath = Split-Path -parent $scriptPath
$rootPath = Split-Path -parent $parentPath

1行のコードでrootPathにアクセスできますか?

74
Mark Kadlec

ディレクトリのバージョン

get-itemは、ここであなたの友好的な援助の手です。

(get-item $scriptPath ).parent.parent

文字列のみが必要な場合

(get-item $scriptPath ).parent.parent.FullName

ファイルのバージョン

$scriptPathがファイルを指す場合、最初にそのファイルのDirectoryプロパティを呼び出す必要があるため、呼び出しは次のようになります。

(get-item $scriptPath).Directory.Parent.Parent.FullName

備考
これは、$scriptPathが存在する場合にのみ機能します。それ以外の場合は、Split-Pathコマンドレットを使用する必要があります。

132
rerun

私はこれを次のように解決しました:

$RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
27
Matthias König

バックスラッシュで分割し、負の配列インデックスを使用して最後から2番目のものを取得して、祖父母のディレクトリ名だけを取得できます。

($scriptpath -split '\\')[-2]

正規表現でエスケープするには、バックスラッシュを2倍にする必要があります。

パス全体を取得するには:

($path -split '\\')[0..(($path -split '\\').count -2)] -join '\'

また、split-pathのパラメーターを見ると、パスをパイプライン入力として受け取るため、次のようになります。

$rootpath = $scriptpath | split-path -parent | split-path -parent
18
mjolinor

使用できます

(get-item $scriptPath).Directoryname

文字列パスを取得する場合、またはディレクトリタイプで使用する場合:

(get-item $scriptPath).Directory
10
mithun_daa

PowerShell 3では、$PsScriptRootまたは2人の親の質問に対して、

$dir = ls "$PsScriptRoot\..\.."
5
Jon Davis

必要な数のsplit-pathを単純にチェーンできます。

$rootPath = $scriptPath | split-path | split-path
4
wisbucky
Split-Path -Path (Get-Location).Path -Parent
2
Emrah Saglam

$ PSScriptRootを使用する場合は、次のことができます

Join-Path -Path $PSScriptRoot -ChildPath ..\.. -Resolve
0
dzolnjan