Powershell получает только текущее имя каталога скриптов - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь получить в переменной в моем скрипте имя текущей папки, ТОЛЬКО имя папки.

Все, что я могу найти в inte rnet, выглядит следующим образом:

PS C:\temp> get-location

Path
----
C:\temp

Я получаю местоположение C: \ Temp. Я хочу только имя Temp в моей переменной.

Как это возможно?

Спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете использовать Split-Path, чтобы получить имя папки из Get-Location с -Leaf:

PS C:\temp> Get-Location

Path
----
C:\temp

PS C:\temp> Split-Path -Path (Get-Location) -Leaf
temp

Мы также можем использовать автоматическую c переменную $PWD для получения текущего каталога:

PS C:\temp> Split-Path -Path $pwd -Leaf
temp

Или с помощью переменной c automati $PSScriptRoot, которая использует текущий каталог, в котором выполняется скрипт in:

Split-Path -Path $PSScriptRoot -Leaf

Из документации для -Leaf:

Указывает, что этот командлет возвращает только последний элемент или контейнер в пути. Например, в пути C: \ Test \ Logs \ Pass1.log он возвращает только Pass1.log.

Кроме того, как @ Scepticalist упоминается в комментариях мы можем использовать Get-Item и выбрать BaseName с Select-Object из указанной папки c (вместо только текущего рабочего каталога):

PS C:\> Get-Item -Path c:\temp | Select-Object -Property BaseName

BaseName
--------
temp

Или просто выберите свойство BaseName напрямую с помощью Перечисление членов (PowerShell v3 +):

PS C:\> (Get-Item -Path C:\temp).BaseName
temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...