copy命令复制文件
语法
copy [/d] [/v] [/n] [/y | /-y] [/z] [/a | /b] <source> [/a | /b] [+<source> [/a | /b] [+ ...]] [<destination> [/a | /b]]
参数说明
参数 | 说明 |
---|---|
/d | 允许加密的源文件保存为解密的目标文件 |
/v | 验证目标文件是否正确写入 |
/n | 如果需要,在复制文件名大于8字符或者文件扩展名大于3字符的文件时,可以用短文件名重新命名目标文件 |
/y | 强制覆盖目标文件 |
/-y | 带确认框的覆盖目标文件 |
/z | 以可重新开始模式(restartable mode:就是说如果有网络问题打断了文件复制,当网络恢复时,可以断点续传的意思,不必再重新复制整个文件)复制网络文件 |
/a | 表示复制成为ascii目标文件 |
/b | 表示复制成为二进制目标文件 |
<source> | 必需。指定需要复制的文件源,可以指定一个或者多个。源可以是系统盘符,加冒号,加文件目录,再加文件名的源,也可以是其中的组合 |
<destination> | 必需。指定需要复制的文件源,可以指定一个或者多个。目标是系统盘符,加冒号,加文件目录,再加文件名的源,也可以是其中的组合 |
/? | 列出命令帮助框 |
示例
复制文件至目录
copy test1.txt c:\Users\Administrator\Desktop\test2 #将当前目录下的test1.txt复制到c:\Users\Administrator\Desktop\test2目录
copy test* c:\Users\Administrator\Desktop\test2 #将当前目录下的test开头的文件复制到c:\Users\Administrator\Desktop\test2目录
copy /y test* c:\Users\Administrator\Desktop\test2 #不提示直接覆盖地复制文件
合并文件
copy /y /b test1.txt + test2.txt test3.txt #这里的/b参数,指示复制结束字符
以上命令表示将test1.txt和test2.txt文件合并至test3.txt。/b表示复制结束字符,/y表示如果test3.txt存在,则直接覆盖test3.txt。
xcopy复制文件及目录
语法
xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]
参数说明
参数 | 说明 |
---|---|
<source> | 必需。 指定要复制的文件的位置和名称。 此参数必须包括驱动器或路径。 |
[<destination>] | 指定要复制的文件的目标。 此参数可以包括驱动器号后接冒号、目录名、文件名或这几项的组合。 |
/W | 在开始复制文件之前显示以下消息并等待你的响应:按任意键开始复制文件 |
/p | 提示你确认是否要创建每个目标文件。 |
/c | 忽略错误。 |
/v | 在将每个文件写入目标文件时对其进行验证,以确保目标文件与源文件相同。 |
/q | 禁止显示 xcopy 消息。 |
/f | 复制时显示源文件名和目标文件名。 |
/l | 生成要复制的文件列表,但不主动复制文件。 |
/g | 当目标不支持加密时创建解密的目标文件。 |
/d [:MM-DD-YYYY] | 仅复制在指定的日期或之后更改的源文件。 如果不包含 MM-DD-YYYY 值,则 xcopy 会复制比现有目标文件更新的所有源文件。 此命令行选项可用于更新已更改的文件。 |
/U | 从仅存在于目标上的源复制文件。 |
/i | 如果源是目录或包含通配符,并且目标不存在,则 xcopy 假设目标指定了目录名,并会创建新目录。 然后,xcopy 将所有指定文件复制到新目录中。 默认情况下,xcopy 会提示你指定目标是文件还是目录。 |
/s | 复制目录和子目录,除非它们是空的。 如果省略 /s,则 xcopy 在单个目录中运行。 |
/e | 复制所有子目录,即使它们是空的。 将 /e 与 /s 和 /t 命令行选项结合使用。 |
/t | 仅复制子目录结构(即树),而不复制文件。 若要复制空目录,必须包含 /e 命令行选项。 |
/k | 复制文件,并保留目标文件的只读属性(如果存在于源文件上)。 默认情况下,xcopy 会删除只读属性。 |
/r | 复制只读文件。 |
/h | 复制具有隐藏文件和系统文件属性的文件。 默认情况下,xcopy 不复制隐藏文件或系统文件(系统文件指的是存放操作系统主要文件的文件夹,一般在安装操作系统过程中自动创建并将相关文件放在对应的文件夹中,这里面的文件直接影响系统的正常运行,多数都不允许随意改变。)。 |
/a | 仅复制设置了存档文件属性的源文件。 /a 不会修改源文件的存档文件(存档文件是一种文件格式,用于存储一组文件以及与这些文件有关的信息(元数据)。创建存档文件的目的是将多个文件存储在一起,通常采用压缩格式,这样可以提高可移植性,同时节省磁盘上的存储空间。)属性。 |
/m | 复制设置了存档文件属性的源文件。 与 /a 不同,/m 会关闭源中指定的文件的存档文件属性。 |
/n | 使用 NTFS 短文件名或目录名创建副本。 将文件或目录从 NTFS 卷复制到 FAT 卷,或者当目标上需要 FAT 文件系统命名约定(即 8.3 命名规则字符)时,/n 是必需的。 destinatio* 文件系统可以是 FAT 或 NTFS。 |
/o | 复制文件所有权和自由访问控制列表 (DACL) 信息。 |
/x | 复制文件审核设置和系统访问控制列表 (SACL) 信息(隐含 /o)。 |
/exclude:FileName1[+[FileName2]][+FileName3] | 指定文件列表。 必须至少指定一个文件。 每个文件将包含搜索字符串,每个字符串在文件中独占一行。 当任一字符串与要复制的文件的绝对路径的任一部分匹配时,将排除该文件的复制。 例如,指定字符串 obj 将排除目录 obj 下的所有文件,或扩展名为 .obj 的所有文件。 |
/y | 禁止提示你确认覆盖现有目标文件。 |
/-y | 提示你确认覆盖现有目标文件。 |
/z | 以可重启模式通过网络复制。 |
/b | 复制符号链接,而不复制文件。 此参数是在 Windows Vista® 中引入的。 |
/j | 复制文件而不缓冲。 建议用于非常大的文件。 此参数是在 Windows Server 2008 R2 中添加的。 |
/compress | 在文件传输期间请求网络压缩(如果适用)。 |
/? | 在命令提示符下显示帮助。 |
示例
复制源文件夹至目标文件夹
xcopy test1 test2 /s /e #复制源文件夹及其下的子目录,即使子目录为空。
xcopy test1 test2 /s /e /h #复制源文件夹及其下的子目录,即使子目录为空。/h指示复制系统文件和隐藏文件
xcopy test1 test2 /d #复制最近更新过的文件,也可以在/d后指定某个日期后更新的文件。如/d:07-15-2023,指示只复制2023-07-15之后更新过的文件。
xcopy test1 test2 /u #更新所有文件,不考虑日期
xcopy test1 test2 /s /e /k /p #复制目录及其子目录文件,并保留只读属性(/k)和提示确认是否创建每个目标文件
xcopy test1 test2 /s /y #只复制非空目录,并且直接覆盖不提示
只复制文件列表
xcopy test1 test2 /d:01-01-2023 /l /s /e > log.out #获取test1目录及其子目录下的文件的列表,并输出到log.out,但不实际复制文件
自定义cmd命令来处理拷贝异常
首先创建copyit.cmd批处理文件,然后在命令行执行该文件,输入源和目标
@echo off
rem copyit.cmd 复制文件夹及其子文件夹
rem %1 代表源文件或文件夹
rem 2% 代表目标文件或文件夹或驱动器盘符
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo 磁盘空间不足或者驱动器盘符和命令语法错误。
goto exit
:abort
echo 按下 CTRL+C 结束当前操作
goto exit
:exit