我有一个目录名称列表,我想将其转换为绝对路径,并删除所有无效的名称。我最初的尝试是管道
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
但是,我得到的是type[Object[]]
而不是[String[]]
。我尝试确保路径存在(通过? { Test-Path $_ }
在管道中添加一个步骤,但这没有帮助。
我究竟做错了什么?如何获取目录作为字符串列表?我需要这样做,以便可以将数组连接到另一个字符串数组,特别是
$newpath = (($env:PATH -split ';'), $paths) -join ';'
object[]
只是PowerShell中的默认数组,在这种(和大多数情况下)都没有关系。您的问题是,您正在尝试使用连接到数组(arr1, arr2)
。这样做的主要目的是创建一个具有两个数组对象,
的数组,因为它是一个数组构造运算符。尝试使用来加入数组+
,如下所示:
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
$newpath = (($env:PATH -split ';') + $paths) -join ';'
您甚至可以跳过拆分,然后执行
$dirs = 'dir1', 'dir2', 'dir3'
$paths = $dirs | % { Resolve-Path -ea 0 $_ } | Select -ExpandProperty Path
$newpath = "$env:PATH;$($paths -join ';')"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句