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

问题描述 投票:1回答:2

在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\)添加到路径。

powershell path appveyor
2个回答
2
投票

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

[在您的情况下,我将在PowerShell中使用Get-ChildItem(也可以通过别名gcidirls使用)返回目录对象数组,并将其添加到当前投射的路径中作为数组,然后使用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 ';'

0
投票
$env:PATH = 
    @($env:PATH) + 
    [string]::join(
        ";", 
        (Get-ChildItem -LiteralPath "[PATH TO SEARCH]" -Directory -Recurse).fullname
    )
© www.soinside.com 2019 - 2024. All rights reserved.