Как правильно вызвать переменную вложенного объекта в cd -path? - PullRequest
0 голосов
/ 13 мая 2019

Я использую PowerShell под Win10-64 бит. Я ввожу путь в аргументе -path в функции «Set-location». Моя переменная пути - это свойство из System.Array, которое является «$ list.name». В цикле я периодически называю ". \ $ List.name [$ i]" как путь, но мне не удалось. Я хочу правильно вызвать вложенную переменную.

  1. код для отображения переменной
PS C:\Users\admin\Documents\Rainmeter\Skins> $list
label name   link                                                        sort
----- ----   ----                                                        ----
    1 chrome C:\Program Files (x86)\Google\Chrome\Application\chrome.exe    1
    1 matlab C:\Program Files\MATLAB\R2019a\bin\matlab.exe                  3

PS C:\Users\admin\Documents\Rainmeter\Skins> $i=0
  1. код для отображения ошибки
PS C:\Users\admin\Documents\Rainmeter\Skins> Set-Location -Path .\$list.name[$i]
Set-Location : could not find path “.\ .name[0]”,the path is not existed.
+ Set-Location -Path .\$list.name[0]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (.\ .name[0]:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
  1. Я попытался добавить двойную кавычку, но она не удалась. Как показано ниже,
Set-Location -Path ".\$list.name[$i]"
  1. Я должен назвать другую переменную, чтобы заменить вложенную переменную. Работает, но не красиво. Как показано ниже,
$file = $list.name[$i]
Set-Location -Path $file

Я хочу правильно вызвать вложенную переменную в параметре -path в цикле и узнать причину ошибки.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Вы не можете установить местоположение для файла, используйте Split-Path, чтобы получить родительский элемент ссылки, а не имя.

Set-Location -Path (Split-Path -Path $list.link[$i] -Parent)
0 голосов
/ 13 мая 2019

Попробуйте обернуть его в оператор подвыражения ($(...)) .PowerShell будет выполняться в скобках перед заменой строки.например:

Set-Location -Path ".\$($list.name[$i])"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...