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

如何在PowerShell中递归复制目录内容并保留子目录结构?

PowerShell递归复制目录内容并保留子目录结构的正确语法

你遇到的问题是:直接通过Get-ChildItem管道到Copy-Item会扁平化所有文件,丢失子目录结构——子目录里的文件会被直接复制到目标根目录,而非保留原有的层级。

最简便的解决方案

直接使用Copy-Item的-Recurse参数,同时指定源目录下的所有内容(而非目录本身):

Copy-Item -Path "sourcefoldername\*" -Destination "C:\Users\username\destinationfoldername\" -Recurse

这个命令会将sourcefoldername下的所有文件和子目录完整复制到目标目录,严格保留原有的子目录结构,且不会复制sourcefoldername目录本身。

原命令无效的原因

原命令Get-ChildItem -Path "sourcefoldername" -Recurse会递归列出源目录下的所有文件(包括子目录中的文件),然后逐个传递给Copy-Item。由于没有指定对应子目录的目标路径,所有文件都会被复制到目标目录的根节点,自然丢失了层级结构。

灵活处理场景(如过滤文件)

如果需要对文件进行过滤或自定义处理,可以通过ForEach-Object构建目标路径:

Get-ChildItem -Path "sourcefoldername" -Recurse | ForEach-Object {
    # 将源路径替换为目标路径,保留层级
    $targetPath = $_.FullName.Replace((Resolve-Path "sourcefoldername").Path, "C:\Users\username\destinationfoldername")
    Copy-Item -Path $_.FullName -Destination $targetPath -Force
}

这种方式可以在复制前添加过滤逻辑(比如用Where-Object筛选特定扩展名),同时确保子目录结构完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:10:36