Получить конкретное имя папки из пути - PullRequest
0 голосов
/ 07 мая 2018

Как получить 4-е имя папки и сохранить его в переменной при циклическом просмотре файлов, хранящихся в родительской папке. Например, если путь

C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder4\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder5\file.extension 

тогда имя подпапки2 должно храниться в переменной. Может ли кто-нибудь помочь мне в этом?

get-childitem $DirectorNane -Recurse | Where-Object{!($_.PSIsContainer)} | % {

    $filePath = $_.FullName

    #Get file name
    $fileName = Split-Path -Path $filePath -Leaf
}   $FileI = Split-Path -Path $filePath -Leaf

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Если вы спрашиваете, как получить родительский каталог для каталога, содержащего файл, вы можете вызвать Split-Path дважды. Пример:

$filePath = "C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension"
$parentOfParent = Split-Path (Split-Path $filePath)
# $parentOfParent now contains "C:\ParentFolder\Subfolder1\subfolder2"
0 голосов
/ 07 мая 2018

Вы можете использовать оператор -split в переменной $filePath, чтобы получить то, что вы хотите.

$split = $filePath -split '\\'
$myvar = $split[3]

Мы используем двойную обратную косую черту для разделения, потому что первая косая черта экранирует символ косой черты для разделения пути. Затем мы можем сослаться на ту часть пути, которая нам нужна, в массиве, который генерируется в переменной «split».

Кроме того, вы можете решить эту проблему одним вкладышем, используя следующий код:

$myvar = $filepath.split('\')[3]

Это гарантирует, что вы всегда получаете четвертый элемент в массиве, но он немного менее гибок, поскольку вы не можете указать, что именно вы хотите, на основе условий с дополнительными сценариями.

...