copy命令本身不支持一对多或多对多复制,需通过多条copy命令、for循环配合列表文件或powershell脚本实现;路径含空格须加英文双引号,目标目录需预先创建,跨盘符推荐robocopy。

用 COPY 命令一次复制多个文件到不同目录,原生命令本身不支持“一对多”或“多对多”映射(比如一个命令把 a.txt 放到 dir1、b.txt 放到 dir2),但可以通过组合方式高效实现。关键在于:不是靠单条 COPY 完成全部,而是用多条 COPY 或借助批处理、循环来批量执行。
用多条独立 COPY 命令(最直接)
适用于文件数量不多(比如 3–5 个)、目标路径明确的场景。每行一条,清晰可控:
COPY "C:\src\a.txt" "D:\dest1\" COPY "C:\src\b.pdf" "E:\backup\" COPY "C:\src\config.ini" "F:\app\conf\"
注意:目标路径末尾加反斜杠 \ 表示目录;如果不加且目标不存在,系统可能误认为是新文件名。
用 FOR 循环配合列表文件(适合中等批量)
把“源文件+目标目录”配对写入文本(如 copylist.txt),每行格式为:
源路径 目标目录
例如 copylist.txt 内容:
C:\data\report.xlsx D:\monthly C:\logs\error.log E:\archive\2024 C:\cfg\settings.json C:\Program Files\MyApp\
然后在 CMD 中运行:
FOR /F "tokens=1,2" %i IN (copylist.txt) DO COPY "%i" "%j\"
如果写进批处理文件(.bat),记得把 %i 和 %j 改成 %%i 和 %%j。
用 PowerShell 替代(更灵活可靠)
Windows 10/11 默认自带 PowerShell,推荐用于复杂映射。新建 copy-multiple.ps1:
$tasks = @(
@{ Source = "C:\a.txt"; Target = "D:\dir1\" },
@{ Source = "C:\b.jpg"; Target = "E:\photos\" },
@{ Source = "C:\c.log"; Target = "F:\logs\" }
)
foreach ($t in $tasks) {
if (Test-Path $t.Source) {
Copy-Item $t.Source -Destination $t.Target -Force
Write-Host "✅ Copied $($t.Source) → $($t.Target)"
} else {
Write-Warning "❌ Source not found: $($t.Source)"
}
}
以管理员身份运行 PowerShell,先执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 允许本地脚本,再运行脚本即可。
注意事项和常见问题
避免踩坑的关键细节:
-
路径含空格必须用英文双引号包裹,否则命令截断(如
"C:\My Files\file.txt") -
COPY不自动创建不存在的目标目录,需提前用MD "D:\new\path"创建 - 想覆盖同名文件,
COPY /Y可禁用提示;加/V可校验复制完整性 - 跨盘符复制时,
COPY可用,但移动建议用MOVE;大量文件推荐用robocopy(功能更强、可续传、日志详细)











