6

考虑这个目录结构:

C:\temp\A\file.txt
C:\温度\B

如果我运行命令

Copy-Item "C:\temp\A" "C:\temp\B\A" -Recurse -Force -ErrorAction Stop

我有

C:\temp\A\file.txt
C:\temp\B\A\file.txt

如果从这种新情况开始,我第二次运行相同的命令,我最终会得到

C:\temp\A\file.txt
C:\temp\B\A\file.txt
C:\temp\B\A\A\file.txt

尽管我运行相同的命令,为什么结果不同?

4

1 回答 1

4

在第一种情况下,目标文件夹C:\temp\B\A不存在,因此Copy-Item创建(缺失的)目标文件夹并将源文件夹的内容复制到其中。

在第二种情况下,目标文件夹已经存在,因此Copy-Item将整个源文件夹(包括文件夹本身)复制到(现有)目标文件夹。

为避免此行为,请确保在复制之前目标文件夹存在或不存在(取决于您希望将源文件夹复制到“目标”还是“作为”目标)。用于Test-Path检查目标是否存在并New-Item创建丢失的文件夹。

于 2016-05-23T14:47:49.253 回答