Удалить корень пути к файлу - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь «обрезать» первую часть пути к файлу, поэтому у меня остаются только некоторые из завершающих частей после подстановочного знака.Я могу сделать следующее, что, как я знаю, не идеально, и из-за характера путей может вернуть неправильную часть пути.Где вы видите «9», это может быть любое число:

$Path = Get-Item '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'

$PathRoot = ($Path.FullName).Replace($Path.Root.FullName,'') #Not neccessary, but gets me closer.
$PathRoot.Split("\")[1..100] -join('\') #Any better way of saying 1..<everything after> suggestions?

Это возвращает:

idontwantthis9 \ whatiwant \ alsowhatiwant

Что являетсяотлично, но я ожидаю, что команда, подобная 'split-path', избавится от части 'idontwantthisX' с подстановочным знаком для числа.

Я понимаю, что могу просто использовать:

$Path.Split('\')[7..8] -join('\')

Однако путь может иметь переменную длину, единственная константа в том, что где-то в пути он будет читать 'idontwantthisX' со случайным номером набора.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

вот небольшой вариант на mklement0.я не заметил его, пока мой не был сделан.[ blush ] я использовал регулярное выражение -split вместо -replace.

$Path = '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'
$RemoveUpToThisRegex = 'idontwantthis\d{1,}\\'

$KeepThisPathPart = ($Path -split $RemoveUpToThisRegex)[1]

$KeepThisPathPart

вывод ...

whatiwant\alsowhatiwant
0 голосов
/ 05 февраля 2019

Используйте оператор -replace с регулярным выражением, которое удаляет префикс:

$path = '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'

$path -replace '^.+\\idontwantthis\d+\\'

Выше приведено whatiwant\alsowhatiwant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...