首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Join-Path将两个以上的字符串合并为一个文件路径?

如何使用Join-Path将两个以上的字符串合并为一个文件路径?
EN

Stack Overflow用户
提问于 2014-09-17 07:45:24
回答 8查看 117.7K关注 0票数 137

如果我想要将两个字符串组合成一个文件路径,我可以像这样使用Join-Path

代码语言:javascript
复制
$path = Join-Path C: "Program Files"
Write-Host $path

打印"C:\Program Files"的代码。但是,如果我想对两个以上的字符串执行此操作:

代码语言:javascript
复制
$path = Join-Path C: "Program Files" "Microsoft Office"
Write-Host $path

PowerShell抛出一个错误:

联接路径:找不到接受实参'Microsoft Office‘的位置参数。

在D:\users\ma\my_script.ps1:1字符:18

+ $path =加入路径<<<< C:“程序文件”"Microsoft Office“

+ CategoryInfo : InvalidArgument:(:)加入路径,ParameterBindingException

+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell

.Commands.JoinPathCommand

我尝试使用字符串数组:

代码语言:javascript
复制
[string[]] $pieces = "C:", "Program Files", "Microsoft Office"
$path = Join-Path $pieces
Write-Host $path

但是PowerShell会提示我输入子路径(因为我没有指定-childpath参数),例如"somepath",然后创建三个文件路径。

代码语言:javascript
复制
C:\somepath
Program Files\somepath
Microsoft Office\somepath

这也是不对的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-09-17 22:51:32

您可以使用.NET Path类:

代码语言:javascript
复制
[IO.Path]::Combine('C:\', 'Foo', 'Bar')
票数 195
EN

Stack Overflow用户

发布于 2015-02-10 08:18:18

由于Join-Path可以通过管道传递路径值,因此您可以通过管道将多条Join-Path语句输送到一起:

代码语言:javascript
复制
Join-Path "C:" -ChildPath "Windows" | Join-Path -ChildPath "system32" | Join-Path -ChildPath "drivers"

它并不像您希望的那样简洁,但它是完全PowerShell的,并且相对容易阅读。

票数 113
EN

Stack Overflow用户

发布于 2018-12-12 23:01:38

从PowerShell 6.0开始,Join-Path有一个名为-AdditionalChildPath新参数,并且可以以开箱即用的方式将路径的多个部分进行组合。通过提供额外的参数或仅提供元素列表。

来自the documentation的示例

代码语言:javascript
复制
Join-Path a b c d e f g
a\b\c\d\e\f\g

因此在PowerShell 6.0和更高版本中,您的变体

代码语言:javascript
复制
$path = Join-Path C: "Program Files" "Microsoft Office"

按照预期工作!

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25880122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档