0

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

我现在有:

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

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

4

2 回答 2

2

很确定问题是 in 中的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
于 2014-10-21T20:54:29.720 回答
0

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

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
于 2014-10-21T20:29:25.903 回答