在powershell中保留文件夹结构的同时复制文件的正确方法是什么?

Mic*_*cah 4 powershell copy

我似乎无法做到这一点.

我有一个c:\MyApps\Websites\MySite已经在其中运行现有网站的现有文件夹.我已经下载了最新的位c:\temp\MySite\artifacts.

当我试图运行这个

$source "c:\temp\MySite"
$destination "c:\MyApps\Websites\MySite"
copy-item $source $destination -recurse -force
Run Code Online (Sandbox Code Playgroud)

如果c:\MyApps\Websites\MySite已经存在则会尝试将其放入c:\MyApps\Websites\MySite\artifacts,但如果它尚不存在则会正确复制.不知道这里发生了什么.有什么建议?

Spe*_*ngD 9

只需使用该robocopy命令.它为此类设计而设计.

robocopy $source $destination /E

它是随Windows 7一起提供的,所以它是一个内部命令,所以它仍然是一个'Powershell'方式,imho,但是如果你想使用copy命令,那么你非常接近,但你当前的实现抓住了source文件夹并放置它在里面target(即结果将是C:\target\source\files,而不是C:\target\files).当你想让内部target看起来像里面的时候source,你需要做:

cp C:\source\* C:\target -r -fo

请注意*,这抓住内容的的source文件夹中.如果您想target先被清除,请rm -r -fo C:\target\*在复制之前进行清除.

Powershell不处理长路径,因此如果您有长文件名或深文件夹,则无论如何都需要使用robocopy.