powershell - 如何在 cd -path 中正确调用嵌套对象变量?
问题描述
我在win10-64位下使用powershell。我在“设置位置”功能下的 -path 参数中输入路径。我的路径变量是 System.Array 的一个属性,即“$list.name”。在一个循环中,我经常调用 ".\$list.name[$i]" 作为路径,但我失败了。我想正确调用嵌套变量。
- 显示变量的代码
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
- 显示错误的代码
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
- 我试图添加双引号,它失败了。如下,
Set-Location -Path ".\$list.name[$i]"
- 我必须命名另一个变量来替换嵌套变量。它有效,但并不漂亮。如下,
$file = $list.name[$i]
Set-Location -Path $file
我想在循环下正确调用-path参数中的嵌套变量并知道错误的原因。
感谢您的任何帮助。
解决方案
您不能将位置设置为文件,用于Split-Path
获取链接的父级,而不是名称。
Set-Location -Path (Split-Path -Path $list.link[$i] -Parent)
推荐阅读
- html - 如何不使背景图像透明
- android - FirebaseRecyclerAdapter 在 SearchView OnQuerySubmit() 之后未更新其值
- javascript - 如何将两个 UL 列表表示为 HTML 父容器中的两个不同项目?
- c# - 通过代码使用模板从 CA 请求证书
- regex - 在单行输出上匹配由管道分隔的多个标记 - 表达式错误
- vim - Vim 缓冲区需要经常清除
- github - 从 github 运行 tox 时出现“错误:py37:InterpreterNotFound:python3.7”
- r - 如何更改 sjPlot 包中的 x 轴刻度?
- azure - 配置多租户 Azure 应用程序
- r - 计算 R 中另一个数据框中的元素