核心要点
copy 命令结合通配符,可以让你高效地批量复制文件,而无需为每个文件单独输入一次命令,这在处理大量文件时尤其有用。

什么是通配符?
通配符是特殊字符,用来代表一个或多个字符,在 CMD 中,最常用的两个通配符是:
-
(星号): 代表任意数量的任意字符。
*.txt代表所有以.txt结尾的文件。report*.*代表所有以report开头的文件,无论其扩展名是什么。a*b.txt代表所有以a开头、以b.txt结尾的文件(中间可以有任意字符)。
-
(问号): 代表单个任意字符。
file?.doc代表file1.doc,filea.doc,fileB.doc等,但不代表file10.doc(因为 只匹配一个字符)或file.doc(因为至少需要一个字符)。
copy 命令中使用通配符的常见场景
复制所有特定类型的文件到另一个文件夹
这是最常见的用法,你想把 D:\Documents 文件夹中所有的 Word 文档(.docx 文件)复制到 D:\Backup\Docs 文件夹中。

命令格式:
copy "源路径\*.扩展名" "目标路径"
示例:
copy "D:\Documents\*.docx" "D:\Backup\Docs"
命令解释:
copy: 复制命令。"D:\Documents\*.docx": 源路径。*.docx会匹配D:\Documents目录下所有以.docx结尾的文件。"D:\Backup\Docs": 目标路径,所有匹配到的文件都会被复制到这个文件夹中。
注意: 如果路径中包含空格(如
Program Files),最好用双引号 将其括起来,以避免命令解析错误。(图片来源网络,侵删)
复制多个匹配不同模式的文件
如果你想一次性复制多种类型的文件,可以使用 号将不同的通配符模式连接起来。
命令格式:
copy "源路径\模式1" "源路径\模式2" ... "目标路径"
示例:
假设你想把 D:\MyProjects 下的所有 Word 文档(.docx)和 Excel 表格(.xlsx)都复制到 D:\Archive。
copy "D:\MyProjects\*.docx" "D:\MyProjects\*.xlsx" "D:\Archive"
命令解释:
- 这个命令会找到
D:\MyProjects中所有.docx文件和所有.xlsx文件,然后将它们一次性全部复制到D:\Archive文件夹。
合并文件
copy 命令还有一个强大的功能是合并文件,当你使用通配符指定多个源文件,并只提供一个目标文件名(而不是一个文件夹路径)时,它会将所有源文件的内容合并写入到这个目标文件中。
命令格式:
copy "源路径\文件1" "源路径\文件2" ... "目标文件名"
示例:
假设你有三个日志文件 log_20251001.txt, log_20251002.txt, log_20251003.txt 在 D:\Logs 文件夹,你想将它们合并成一个名为 all_logs.txt 的文件。
copy "D:\Logs\log_20251001.txt" "D:\Logs\log_20251002.txt" "D:\Logs\log_20251003.txt" "D:\Logs\all_logs.txt"
使用通配符简化合并命令: 上面的命令可以简化为:
copy "D:\Logs\log_*.txt" "D:\Logs\all_logs.txt"
命令解释:
copy "D:\Logs\log_*.txt": 源部分。log_*.txt会匹配D:\Logs下所有以log_开头、以.txt结尾的文件。"D:\Logs\all_logs.txt": 目标部分,这里是一个具体的文件名,而不是一个文件夹。copy命令会执行合并操作,将所有匹配到的日志文件内容追加到all_logs.txt中。
重要注意事项和最佳实践
-
目标路径是文件夹还是文件?
- 如果目标路径是一个文件夹(如
D:\Backup),所有源文件都会被复制到该文件夹中,文件名保持不变。 - 如果目标路径是一个具体的文件名(如
D:\Backup\combined.txt),copy命令会尝试将所有源文件合并到这个目标文件中。
- 如果目标路径是一个文件夹(如
-
覆盖已有文件 (Overwriting)
- 当你复制文件时,如果目标文件夹中已经存在同名文件,
copy命令默认会直接覆盖它,并且不会给出任何警告。 - 示例问题: 如果你复制
D:\Source\*.txt到D:\Destination,而D:\Destination中已经有一个report.txt文件,那么源文件夹中的report.txt会覆盖目标文件夹中的report.txt,且你不会收到提示。
- 当你复制文件时,如果目标文件夹中已经存在同名文件,
-
使用
/Y和-Y选项控制覆盖行为/Y(Yes): 禁用覆盖确认提示,当你确定要覆盖所有同名文件时使用,可以避免在脚本中因需要确认而中断。copy /Y "D:\Source\*.txt" "D:\Destination"
-Y(No): 启用覆盖确认提示,即使从批处理脚本中运行,每次遇到同名文件时也会询问你是否覆盖。copy -Y "D:\Source\*.txt" "D:\Destination"
-
使用
/B(Binary) 和/A(ASCII) 选项- 这两个选项主要影响合并文件时的行为。
/B(二进制模式): 将文件视为二进制流,在合并时,文件之间不会插入任何分隔符(如EOF字符),这对于合并图片、视频或任何非文本文件至关重要。/A(ASCII模式): 将文件视为文本文件,在合并时,通常会在文件之间添加一个EOF(End of File) 字符作为分隔符。- 示例: 合并二进制文件(如日志)时,推荐使用
/B。copy /B "D:\Logs\log_*.txt" "D:\Logs\all_logs.txt"
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 批量复制文件 | copy "D:\Source\*.jpg" "D:\Pictures" |
将 D:\Source 下所有 .jpg 文件复制到 D:\Pictures 文件夹。 |
| 复制多种文件 | copy "D:\Source\*.txt" "D:\Source\*.csv" "D:\Data" |
将 D:\Source 下所有 .txt 和 .csv 文件复制到 D:\Data。 |
| 合并文件 | copy "D:\Source\part*.txt" "D:\Source\final.txt" |
将 D:\Source 下所有 part*.txt 文件合并成 final.txt。 |
| 静默覆盖 | copy /Y "D:\Source\*.doc" "D:\Destination" |
复制所有 .doc 文件,并自动覆盖目标文件夹中的同名文件,不提示。 |
掌握 copy 命令和通配符的结合使用,可以极大地提高你在命令行下管理文件的效率。

