下面我将从基础用法到进阶技巧,详细地为你讲解如何使用 copy 命令。

基础用法:复制单个文件
这是最简单的形式,将一个源文件复制到一个目标位置。
语法
copy 源文件路径 目标路径
示例
假设你的文件结构如下:
C:\Users\YourUser\Desktop\
├── my_document.txt
└── my_folder\
示例1:复制到同一目录下,并重命名
将 my_document.txt 复制到同一文件夹,并命名为 my_document_backup.txt。
copy C:\Users\YourUser\Desktop\my_document.txt C:\Users\YourUser\Desktop\my_document_backup.txt
- 你也可以先切换到该目录,再使用相对路径,这样更简单:*
cd C:\Users\YourUser\Desktop copy my_document.txt my_document_backup.txt
示例2:复制到不同目录
将 my_document.txt 复制到 my_folder 文件夹中。

copy C:\Users\YourUser\Desktop\my_document.txt C:\Users\YourUser\Desktop\my_folder\
- 注意:目标路径的末尾加上反斜杠
\表示它是一个文件夹,如果省略\,系统会认为my_folder是一个新文件名,导致复制失败并提示“文件已存在或被覆盖”。*
示例3:复制到不同驱动器
将 D:\data\report.xlsx 复制到 C:\backup\ 文件夹。
copy D:\data\report.xlsx C:\backup\
进阶用法
复制时合并文件(追加内容)
如果你使用 号连接多个源文件,copy 命令会将它们的内容合并后复制到目标文件中。
语法
copy 文件1路径 + 文件2路径 + ... 目标文件路径
示例
假设 log1.txt 内容是 "Error 1",log2.txt 内容是 "Error 2"。
copy log1.txt + log2.txt combined_log.txt
执行后,combined_log.txt 的内容将是 "Error 1Error 2"(注意没有换行符)。

你也可以直接合并而不指定新文件名,它会将内容追加到第一个文件中:
copy log1.txt + log2.txt
执行后,log1.txt 的内容会变成 "Error 1Error 2"。
使用通配符批量复制
你可以使用通配符 (代表任意多个字符) 和 (代表任意一个字符) 来批量复制文件。
示例
示例1:复制所有 .txt 文件
将 D:\docs 文件夹中所有扩展名为 .txt 的文件,复制到 D:\backup\docs 文件夹。
copy D:\docs\*.txt D:\backup\docs\
示例2:复制所有以 "report" 开头,扩展名为 .log 的文件
copy D:\logs\report*.log D:\backup\logs\
示例3:复制文件名前三个字符任意,但必须是三个字符,扩展名为 .jpg 的文件
copy D:\images\???.jpg D:\backup\images\
重要参数和选项
copy 命令有一些有用的参数,可以控制其行为。
/Y (覆盖确认)
这是最常用的参数,默认情况下,当目标文件已存在时,copy 命令会提示你是否要覆盖它 (Overwrite (Yes/No/All)?),如果你在脚本中自动化复制,不希望每次都停下来等待输入,就可以使用 /Y。
- 作用:禁止覆盖确认,直接覆盖已存在的目标文件。
示例
copy C:\source\file.txt C:\destination\file.txt /Y
即使 C:\destination\file.txt 已存在,命令也会静默覆盖它,而不会提示你。
/-Y (需要确认)
与 /Y 相反,强制在覆盖文件前进行确认。
示例
copy C:\source\file.txt C:\destination\file.txt /-Y
即使 copy 命令在脚本中运行,它也会提示你确认是否覆盖。
与 xcopy 和 robocopy 的区别
对于简单的文件复制,copy 足够了,但当你需要更强大的功能时,应该使用 xcopy 或 robocopy。
| 特性 | copy |
xcopy |
robocopy (Robust File Copy) |
|---|---|---|---|
| 功能 | 基础复制 | 增强的复制 | 超级强大的复制和同步工具 |
| 复制目录 | ❌ 不能 | ✅ 可以 | ✅ 可以 |
| 递归复制 | ❌ 不能 | ✅ 可以 (/S, /E) |
✅ 可以 |
| 复制子空目录 | ❌ 不能 | ✅ 可以 (/E) |
✅ 可以 |
| 复制文件属性 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
| 复制文件权限 | ❌ 不能 | ✅ 可以 (/O) |
✅ 可以 (/COPY:DATSO) |
| 重试机制 | ❌ 没有 | ❌ 没有 | ✅ 有 (/R:n, /W:n) |
| 日志记录 | ❌ 基础 | ✅ 有 (/L, /M) |
✅ 非常详细 (/LOG+:file, /NFL, NDL) |
| 镜像/同步 | ❌ 不能 | ❌ 不能 | ✅ 可以 (/MIR) |
| 适用场景 | 单个文件,简单操作 | 批量复制文件和目录 | 数据备份、服务器同步、大型文件迁移 |
简单示例:使用 xcopy 复制整个文件夹
将 D:\my_project 文件夹(包括其所有子文件夹和文件)复制到 E:\backup\my_project。
xcopy D:\my_project E:\backup\my_project /E /I /H /Y
/E: 复制所有子目录,包括空目录。/I: 如果目标不存在,且复制的是多个文件,则假定目标是一个目录。/H: 同时复制隐藏和系统文件。/Y: 覆盖已存在的文件时不提示。
| 命令 | 用途 | 关键特点 |
|---|---|---|
copy |
复制单个或多个文件 | 最基础,不能复制整个目录。 |
xcopy |
复制目录和文件 | 比 copy 功能强,可以递归复制目录。 |
robocopy |
强大的文件复制和同步 | 功能最全,稳定可靠,适合备份和同步,是专业管理员的首选。 |
对于日常使用:
- 只复制一两个文件?用
copy。 - 要复制一个文件夹里所有东西?用
xcopy。 - 要做备份、同步重要数据?用
robocopy。
