Пути к файлам PowerShell - PullRequest
       6

Пути к файлам PowerShell

0 голосов
/ 29 июня 2011

Я запускаю команду ( Get-Location ), и она возвращает текущее местоположение файла.

Пример: c:\folder1\folder2\folder3\XXX\folder4\folder5

Во-первых, извыше, я хочу получить значение XXX и сделать его равным переменной.Как я могу это сделать?

Во-вторых, я хочу получить значение c:\folder1\folder2\folder3\XXX\folder4\ и сделать его равным переменной.Как я могу это сделать?

Я использовал заполнители folder1, folder2 и т. Д. Для иллюстрации.Это динамические.

Ответы [ 5 ]

1 голос
/ 29 июня 2011

Некоторые из этих ответов довольно близки, но все забывают о своей ракушке.

$FirstAnswer = (Get-Item ..\..).Name
$SecondAnswer = (Get-Item ..).FullName
1 голос
/ 29 июня 2011

Чтобы ответить на ваш второй вопрос первым: чтобы получить родительский полный путь, используйте Split-Path:

$var = Split-Path -parent "c:\folder1\folder2\folder3\XXX\folder4\folder5"

Для вашего другого вопроса эта функция разделит все элементы вашего пути и вернетих в массив:

function Split-Paths($pth)
{
    while($pth)
    {
        Split-Path -leaf $pth
        $pth = Split-Path -parent $pth
    }
}

Затем вы можете получить 5-й элемент следующим образом:

$xxx = (Split-Paths "c:\folder1\folder2\folder3\XXX\folder4\folder5")[-5]

Обратите внимание, что функция возвращает элементы в «обратном» порядке, поэтому вы используетеОтрицательный индекс к индексу с конца массива.

0 голосов
/ 29 июня 2011

Вы можете использовать регулярные выражения:

$rawtext = "If it interests you, my e-mail address is tobias@powershell.com."

# Simple pattern recognition:
$rawtext -match "your regular expression"
  *True*

# Reading data matching the pattern from raw text:
$matches

$matches возвращает результат.

Для получения дополнительной информации, проверьте Глава 13. Текст и регулярные выражения (требуется регистрация).

0 голосов
/ 29 июня 2011

Вы можете сделать это с помощью регулярного выражения:

PS> $path = 'c:\folder1\folder2\folder3\XXX\folder4\folder5'
PS> $path -match 'c:\\([^\\]+)\\([^\\]+)\\([^\\]+)\\([^\\]+)'
True
PS> $matches

Name                           Value
----                           -----
4                              XXX
3                              folder3
2                              folder2
1                              folder1
0                              c:\folder1\folder2\folder3\XXX
0 голосов
/ 29 июня 2011

Чтобы получить путь в переменную, вы можете сделать что-то вроде этого:

$a = (Get-Location).Path

Затем, если вы хотите установить значение переменной «XXX» вашего пути в переменной, выможно использовать функцию split ():

$x = $a.split('\')[4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...