138 votes

Comment obtenir le répertoire parent du parent dans Powershell?

Donc, si j'ai un répertoire stocké dans une variable, dites :

 $scriptPath = (Get-ScriptDirectory);

Maintenant, j'aimerais trouver le répertoire deux niveaux parent plus haut.

J'ai besoin d'une belle façon de faire :

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

Puis-je accéder au rootPath en une seule ligne de code ?

48voto

Matthias König Points 371

J'ai résolu ça comme ça :

 $RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent

23voto

mjolinor Points 23012

Vous pouvez le diviser au niveau des barres obliques inverses et prendre l'avant-dernier avec une indexation de tableau négative pour obtenir uniquement le nom du répertoire des grands-parents.

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

Vous devez doubler la barre oblique inverse pour l'échapper dans le regex.

Pour obtenir le chemin complet :

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

Et, en regardant les paramètres de split-path, il prend le chemin comme entrée de pipeline, donc :

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

14voto

mithun_daa Points 1375

Vous pouvez utiliser

 (get-item $scriptPath).Directoryname

pour obtenir le chemin de la chaîne ou si vous voulez le type Directory, utilisez :

 (get-item $scriptPath).Directory

13voto

wisbucky Points 829

Vous pouvez simplement enchaîner autant de split-path que vous le souhaitez :

 $rootPath = $scriptPath | split-path | split-path

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X