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

2023-12-01

我似乎永远无法把这件事做好。

我有一个现有的文件夹c:\MyApps\Websites\MySite已经有一个正在运行的现有网站。我已经下载了位于以下的最新版本c:\temp\MySite\artifacts.

当我尝试运行这个时

$source "c:\temp\MySite"
$destination "c:\MyApps\Websites\MySite"
copy-item $source $destination -recurse -force

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


只需使用robocopy命令。它是designed对于这种事情。

robocopy $source $destination /E

它是随 Windows 7 一起提供的,所以它是一个内部命令,因此它仍然是一种“Powershell”方式,恕我直言,但是如果您想使用复制命令,那么您已经非常接近了,但是您当前的实现抓住了source文件夹并将其放入其中target(即结果将是C:\target\source\files, not C:\target\files)。当你想要制作内部时target看起来像里面source,你需要做:

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

注意*,这抓住了contents of the source文件夹。如果你想target首先要清除,只需执行rm -r -fo C:\target\*复制之前。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐