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

Python实现按路径结构复制指定文件夹及文件的高效方案问询

高效复制特定路径结构下的指定文件方案

当然有更高效的方案!不用手动逐个创建目录,Windows原生工具Robocopy或者PowerShell脚本就能一次性搞定你的需求,完美匹配你的路径保留和文件筛选要求。

需求回顾

源路径结构示例(2018年全年日期目录):

Z:\Archived\2018\2018_01_01\BOM_Archived\A.nc.gz
Z:\Archived\2018\2018_01_01\BOM_Archived\B.nc.gz
Z:\Archived\2018\2018_01_01\BOM_Archived\C.nc.gz
Z:\Archived\2018\2018_01_01\other files and folders
...
Z:\Archived\2018\2018_12_31\BOM_Archived\A.nc.gz
Z:\Archived\2018\2018_12_31\BOM_Archived\B.nc.gz
Z:\Archived\2018\2018_12_31\BOM_Archived\C.nc.gz
Z:\Archived\2018\2018_12_31\other files and folders

目标:将每个日期目录下的BOM_Archived文件夹及其内的A.nc.gz、B.nc.gz、C.nc.gz文件复制到V:\Historical_BOM_Raw\,保留原有路径结构,不复制其他文件/文件夹。


方案1:Robocopy(Windows原生,最推荐)

Robocopy是Windows自带的高级复制工具,专门针对批量文件复制、路径保留和筛选场景,完全不需要手动创建目录,一行命令就能搞定。

执行命令(管理员身份打开CMD/PowerShell)

robocopy "Z:\Archived\2018" "V:\Historical_BOM_Raw\2018" /E /XF * /XD * /IF A.nc.gz B.nc.gz C.nc.gz /NP

参数解释(关键部分):

  • /E:复制所有子目录(包括空目录),确保完整保留日期和BOM_Archived的路径结构
  • /XF *:默认排除所有文件,后续通过/IF精准指定要复制的文件
  • /XD *:默认排除所有目录,仅保留包含目标文件的BOM_Archived及上层目录
  • /IF A.nc.gz B.nc.gz C.nc.gz:仅包含这三个指定文件,Robocopy会自动追踪它们的路径结构
  • /NP:不显示复制进度(可选,去掉即可看到实时进度)

验证命令(先预览不实际复制)

如果担心出错,可以先加/L参数,仅列出要复制的内容:

robocopy "Z:\Archived\2018" "V:\Historical_BOM_Raw\2018" /E /XF * /XD * /IF A.nc.gz B.nc.gz C.nc.gz /L /NP

方案2:PowerShell脚本(灵活定制)

如果你习惯用PowerShell,这个脚本可以实现同样的效果,还能根据需要扩展筛选规则:

# 定义源和目标根目录
$sourceRoot = "Z:\Archived\2018"
$targetRoot = "V:\Historical_BOM_Raw\2018"

# 查找并复制符合条件的文件
Get-ChildItem -Path $sourceRoot -Recurse -Include "A.nc.gz", "B.nc.gz", "C.nc.gz" | 
    Where-Object { $_.Directory.Name -eq "BOM_Archived" } |
    ForEach-Object {
        # 构建目标路径,自动替换根目录前缀
        $targetPath = $_.FullName.Replace($sourceRoot, $targetRoot)
        # 自动创建目标目录(不存在则创建)
        New-Item -ItemType Directory -Path (Split-Path $targetPath -Parent) -Force | Out-Null
        # 复制文件
        Copy-Item -Path $_.FullName -Destination $targetPath -Force
    }

脚本逻辑:

  1. 递归查找源目录下的三个指定文件
  2. 过滤出仅位于BOM_Archived文件夹内的文件
  3. 自动生成对应的目标路径
  4. 按需创建目标目录结构
  5. 复制文件到目标位置

这两个方案都比手动创建目录复制高效得多,Robocopy性能更优适合大规模文件复制,PowerShell则更灵活适合需要定制逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:08