PowerShell:将每个子目录添加到路径

PowerShell:将每个子目录添加到路径,powershell,path,appveyor,Powershell,Path,Appveyor,在Windows 10和PowerShell上,如何将每个子目录添加到PATH变量 我对Linux的一些方法进行了改进(例如),并将它们“适应”到PowerShell,我遇到了以下问题 '$env:PATH = $env:PATH + (find C:\Users\appveyor\ -type d -printf "\";%pbuild\\"")' 这将抛出文件名、目录名或卷标语法不正确。 更详细一点:我正在appveyor上运行这个程序,并尝试将appveyor下的每个路径(为了清晰起见简

在Windows 10和PowerShell上,如何将每个子目录添加到PATH变量

我对Linux的一些方法进行了改进(例如),并将它们“适应”到PowerShell,我遇到了以下问题

'$env:PATH = $env:PATH + (find C:\Users\appveyor\ -type d -printf "\";%pbuild\\"")'
这将抛出文件名、目录名或卷标语法不正确。


更详细一点:我正在appveyor上运行这个程序,并尝试将
appveyor
下的每个路径(为了清晰起见简化)添加到路径中,例如
C:\Users\appveyor\*\build\

Linux上的
find
命令与Windows上的
find
命令非常不同

在您的情况下,我会在PowerShell中使用
Get ChildItem
(也可以通过别名
gci
dir
ls
)返回一个目录对象数组,将其添加到作为数组铸造的当前路径中,然后使用Windows路径分隔符
-将它们连接起来,该分隔符是分号

可能是这样的:

$env:PATH=(
@($env:PATH)+(
Get ChildItem-LiteralPath'C:\Users\appveyor'-目录-Recurse
)
)-join[System.IO.Path]::路径分隔符
这是基于@briantist的建议;主要区别在于
join
语法

要在appveyor上完成此工作,请执行以下操作:

{ps:
    "$env:PATH = 
         @($env:PATH) + [string]::join(
             \";\", 
             (Get-ChildItem -LiteralPath \"[PATH TO SEARCH]\" -Directory -Recurse).fullname
    )"
}

这一点以前已经得到了回答。你本可以在你问之前搜索一下。。。看看霍格布的答案,但这是一个不同的问题;这不是关于设置环境路径,而是关于在设置路径的同时正确使用
FIND
;但是,我仍然得到
文件名、目录名或卷标语法不正确。
错误。
{ps:
    "$env:PATH = 
         @($env:PATH) + [string]::join(
             \";\", 
             (Get-ChildItem -LiteralPath \"[PATH TO SEARCH]\" -Directory -Recurse).fullname
    )"
}