在Windows 10上并通过PowerShell,如何将每个子目录添加到PATH变量中?
我为Linux调整了某种方法(例如this one),并将它们“适配”到PowerShell,我遇到了以下问题。
'$env:PATH = $env:PATH + (find C:\Users\appveyor\ -type d -printf "\";%pbuild\\"")'
此抛出The filename, directory name, or volume label syntax is incorrect.
多一点上下文:我正在Appveyor上运行它,并尝试将appveyor
下的每条路径(为简化起见,例如C:\Users\appveyor\*\build\
)添加到路径。
Linux上的find
命令与Windows上的Find
命令非常不同。
[在您的情况下,我将在PowerShell中使用Get-ChildItem
(也可以通过别名gci
,dir
,ls
使用)返回目录对象数组,并将其添加到当前投射的路径中作为数组,然后使用Windows路径分隔符(即分号-join
)将其;
。
可能看起来像这样:
$env:PATH = (
@($env:PATH) + (
Get-ChildItem -LiteralPath 'C:\Users\appveyor' -Directory -Recurse
)
) -join [System.IO.Path]::PathSeparator # <- that could just be a literal string ';'
$env:PATH =
@($env:PATH) +
[string]::join(
";",
(Get-ChildItem -LiteralPath "[PATH TO SEARCH]" -Directory -Recurse).fullname
)