当目标文件夹存在或不存在时,如何使用Copy-Item命令?

6

当目标文件夹存在时,复制文件的正确方式在这里定义。

Copy-Item 'C:\Source\*' 'C:\Destination' -Recurse -Force

如果目标文件夹不存在,则源子文件夹中的某些文件将直接复制到目标文件夹中,而不保留原始文件夹结构。
有没有一种方法可以使用单个Copy-Item命令来处理这两种情况并保留文件夹结构?或者这对PowerShell来说是太过苛求了?

测试时会出现第一次错误,'copy-item : Container cannot be copied onto existing leaf item.' 但是以完全相同的方式运行它将强制按正确的方式复制项目而不会出现任何问题,保持结构 - 我正在运行5.1。 - Matthew
我没有收到任何错误信息。第一级子文件夹的内容被移动到根目录下了。/a/b/1.txt -> /a/1.txt - Kimi
我想这很明显,但还是值得问一下,你是否以管理员身份运行,并且是否在ISE中运行? - Matthew
我在 Powershell 命令提示符和 VSTS 中以管理员身份运行,并看到相同的结果。我认为这是一个旧问题 https://groups.google.com/forum/#!topic/microsoft.public.windows.powershell/rpuLRCTCryI - Kimi
1个回答

2

您可能需要使用带有test-path的if语句

这是我用来解决这个问题的脚本

$ValidPath = Test-Path -Path c:\temp

If ($ValidPath -eq $False){

    New-Item -Path "c:\temp" -ItemType directory
    Copy-Item -Path "c:\temp" -Destination "c:\temp2" -force
}

Else {
      Copy-Item -Path "c:\temp" -Destination "c:\temp2" -force
     }

抢我话了。总是使用Test-Path,因为它比try/catch更高效。 - Lord Helmet
我会添加-recurse。 - js2010

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接