如何通过Powershell实现单文件夹文件批量复制到多个匹配目标目录
PowerShell 单源文件夹批量复制到多匹配目标目录解决方案
原脚本问题说明
- 内层多余的
Get-ChildItem $dir.Fullname会读取目标目录下的现有子项,将源文件复制到这些子项中,而非你需要的\\files\CA*\Files\Files根目录 - 匹配目标目录时不需要加
-Recurse参数,已明确路径规则的情况下加该参数会额外匹配到深层子目录,导致多余的复制操作
修正后脚本
# 定义源文件夹路径 $source = 'C:\Documents' # 匹配所有CA州对应符合规则的目标目录 $destinationList = Get-ChildItem -Path \\files\CA*\Files\Files -Directory # 遍历所有目标目录执行复制 foreach ($targetDir in $destinationList) { # 复制源目录下全部内容到当前目标目录 Copy-Item -Path "$source\*" -Destination $targetDir.FullName -Force -Recurse -WhatIf }
调整说明
Copy-Item的-Path参数改为$source\*,仅复制源文件夹内的所有内容,不会把源文件夹本身嵌套复制到目标目录中- 移除内层冗余循环,直接对匹配到的目标目录执行复制操作
- 移除
Get-ChildItem的-Recurse参数,避免匹配到不需要的深层子目录
注意事项
- 测试阶段保留*-WhatIf参数,脚本运行后会先输出待执行的复制操作,确认路径、操作完全符合预期后,再删除-WhatIf*参数执行实际复制
- 如需适配其他州的复制需求,只需修改路径规则中的州代码即可,例如将
CA*改为TX*即可匹配所有德克萨斯州的办事处目录
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

