path作为参数powershell

时间:2014-10-21 20:13:22

标签: powershell path copy-item

我遇到路径问题。我需要将我添加的目录中的所有文件复制为Powershell命令中的第一个参数。

现在我有:

Copy-Item -Path "$args[0]/" -Filter*.*

所以它会复制到我现在的位置(它没关系,我不想要其他位置),但它不会复制任何东西。请帮忙。

2 个答案:

答案 0 :(得分:2)

非常确定问题是0中的$args元素没有在创建无效路径的字符串中扩展。将变量包装在$()中以允许它在双引号字符串中展开。否则,您最终会尝试复制文件夹C:\TEST[0]/,这显然是不正确的。

Copy-Item -Path "$($args[0])/" -Filter *.* -Recurse

由于Windows路径使用反斜杠,因此还不确定为什么在那里有正斜杠。

function Copy-Something(){
    test-Path "$($args[0])/"
    test-path "$($args[0])"
}

Copy-Something C:\temp

由于你提供的很少,输出显示在那里有斜线可能是多余的。还建议在论证上调用Test-Path,因为它可能已经为你抓住了这个。

True
True

来自问题评论

如果您还想要文件夹内容,那么您正在寻找-Recurse参数。

来自答案评论

如果你想要内容而不是文件夹,你应该能够做到这样的事情:

Copy-Item -Path "$($args[0])\*" -Filter *.* -Recurse

答案 1 :(得分:0)

如有疑问,请使用Get-Help Command。

PS C:\> Get-Help Copy-Item -ShowWindow

-------------------------- EXAMPLE 3 --------------------------
This command copies the contents of the C:\Logfiles directory
to the C:\Drawings\Logs directory. It creates the \Logs
subdirectory if it does not already exist.

Windows PowerShell
PS C:\> Copy-Item C:\Logfiles -Destination C:\Drawings\Logs -Recurse