You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Copy-Item无法复制深层文件夹的问题排查

问题原因与解决方法

你的脚本中Get-ChildItem确实能正确定位到所有深层的Projects文件夹,但Copy-Item的默认行为导致了复制结果不符合预期:

当你将多个目录路径传给Copy-Item的-Path参数,且-Destination是已存在的目录时,PowerShell会把每个Projects目录内部的所有内容直接复制到Z:\的根目录下,而不是把Projects文件夹本身完整复制过去。如果多个Projects目录存在同名文件/子文件夹,后续复制的内容会覆盖之前的,甚至可能因权限、文件锁定等问题导致部分内容复制失败,看起来就像复制未生效。

修正后的脚本

要把Projects文件夹本身完整复制到Z:\,可以通过循环逐个处理每个找到的文件夹,确保每个Projects作为独立目录被复制:

# 获取所有深层的Projects目录
$projectsFolders = Get-ChildItem -Path "C:\Users\public" -Recurse -Directory -Filter "Projects"

# 逐个复制每个Projects文件夹到Z:\
foreach ($folder in $projectsFolders) {
    Copy-Item -Path $folder.FullName -Destination "Z:\" -Recurse -Force -Verbose
}

添加-Verbose参数可以查看复制过程的详细日志,方便排查权限或文件锁定等问题;-Force参数会覆盖目标目录中已存在的同名文件(按需使用)。

是否需要切换到robocopy?

如果你的复制需求比较复杂(比如处理大量文件、需要断点续传、保留完整权限/时间戳、生成详细复制日志等),robocopy确实是更合适的选择——它的参数更丰富,对复杂场景的支持更完善。比如用robocopy复制单个Projects目录的命令:

robocopy "C:\Users\public\document\WIP\Personal\Projects" "Z:\Projects" /E /COPYALL /LOG:copy_log.txt

其中/E表示复制所有子目录(包括空目录),/COPYALL表示复制所有文件属性和权限,/LOG可以生成复制日志。

但如果只是简单的目录复制需求,调整上述PowerShell脚本就能解决问题,不需要强制切换到robocopy。

内容的提问来源于stack exchange,提问作者TexasRed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:11:20