PowerShell:将每个子目录添加到路径
PowerShell: Add every sub-directory to path
在 Windows10 上并通过 PowerShell,如何将每个子目录添加到 PATH 变量?
我为 Linux(例如 this one)改进了一些方法,并将它们 "adapting" 用于 PowerShell,我遇到了以下情况。
'$env:PATH = $env:PATH + (find C:\Users\appveyor\ -type d -printf "\";%pbuild\"")'
这会引发 The filename, directory name, or volume label syntax is incorrect.
更多上下文:我在 appveyor 上 运行 this,并尝试将 appveyor
下的每个路径(为清楚起见进行了简化)添加到路径中,例如 C:\Users\appveyor\*\build\
。
Linux 上的 find
命令与 Windows 上的 Find
命令非常不同。
在你的情况下,我会在 PowerShell 中使用 Get-ChildItem
(也可以通过别名 gci
、dir
、ls
)到 return 目录对象数组,添加到当前路径转换为数组,然后 -join
它们与 Windows 路径分隔符,即分号 ;
.
可能看起来像这样:
$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
)
这基于@briantist 的建议;主要区别在于 join
语法。
要在 appveyor 上完成这项工作,请执行以下操作:
{ps:
"$env:PATH =
@($env:PATH) + [string]::join(
\";\",
(Get-ChildItem -LiteralPath \"[PATH TO SEARCH]\" -Directory -Recurse).fullname
)"
}
在 Windows10 上并通过 PowerShell,如何将每个子目录添加到 PATH 变量?
我为 Linux(例如 this one)改进了一些方法,并将它们 "adapting" 用于 PowerShell,我遇到了以下情况。
'$env:PATH = $env:PATH + (find C:\Users\appveyor\ -type d -printf "\";%pbuild\"")'
这会引发 The filename, directory name, or volume label syntax is incorrect.
更多上下文:我在 appveyor 上 运行 this,并尝试将 appveyor
下的每个路径(为清楚起见进行了简化)添加到路径中,例如 C:\Users\appveyor\*\build\
。
Linux 上的 find
命令与 Windows 上的 Find
命令非常不同。
在你的情况下,我会在 PowerShell 中使用 Get-ChildItem
(也可以通过别名 gci
、dir
、ls
)到 return 目录对象数组,添加到当前路径转换为数组,然后 -join
它们与 Windows 路径分隔符,即分号 ;
.
可能看起来像这样:
$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
)
这基于@briantist 的建议;主要区别在于 join
语法。
要在 appveyor 上完成这项工作,请执行以下操作:
{ps:
"$env:PATH =
@($env:PATH) + [string]::join(
\";\",
(Get-ChildItem -LiteralPath \"[PATH TO SEARCH]\" -Directory -Recurse).fullname
)"
}