我遇到路径问题。我需要将我添加的目录中的所有文件复制为Powershell命令中的第一个参数。
现在我有:
Copy-Item -Path "$args[0]/" -Filter*.*
所以它会复制到我现在的位置(它没关系,我不想要其他位置),但它不会复制任何东西。请帮忙。
答案 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