我正在使用以下Powershell命令将一个用户的Mercurial.ini文件复制到另一个用户的个人资料中:
> copy $env:USERPROFILE\..\benm\Mercurial.ini $env:USERPROFILE\..\alex\Mercurial.ini
效果很好。但是,我想以这样的方式编写它,以便我可以执行以下操作,预先指定用户并将它们输入到复制命令中:
> "benm","alex" | copy "$env:UserProfile\..\$_[0]\Mercurial.ini" "$env:UserProfile\..\$_[1]\Mercurial.ini"
但是,上述方法无效。是否有一种优雅的方式来实现我想要做的事情?
答案 0 :(得分:3)
这样的东西?
,("benm","alex") |
foreach {copy "$env:UserProfile\..\$($_[0])\Mercurial.ini" "$env:UserProfile\..\$($_[1])\Mercurial.ini"}
,(“benm”,“alex”)语法使得来自管道的输入成为2D数组
PS C:\> $x = ,("benm","alex")
PS C:\> $x[0]
benm
alex
PS C:\> $x[0][0]
benm
PS C:\> $x[0][1]
alex
Powershell管道将自动将数组和集合“展开”到对象流中,但对于嵌套数组只有一个深度。通过使其成为2D数组,它“展开”第一级,并通过管道文件完整地传递嵌套数组。