复制项目不一致的行为?

Tom*_*omd 5 powershell copy-item

考虑这个目录结构:

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

如果我运行命令

Copy-Item "C:\temp\A" "C:\temp\B\A" -Recurse -Force -ErrorAction Stop
Run Code Online (Sandbox Code Playgroud)

我有

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

为什么我运行相同的命令结果却不同?

Ans*_*ers 4

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

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

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