复制文件和目录,包括子目录。
有关如何使用此命令的示例,请参阅 示例。
语法
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]
参数
参数 | DESCRIPTION |
---|---|
<源> | 必填。 指定要复制的文件的位置和名称。 此参数必须包括驱动器或路径。 |
[<目标>] | 指定要复制的文件的目标。 此参数可以包括驱动器号和冒号、目录名称、文件名或它们的组合。 |
/w | 显示以下消息并等待响应,然后再开始复制文件: 按任意键开始复制文件 |
/p | 提示你确认是否要创建每个目标文件。 |
/c | 忽略错误。 |
/v | 验证每个文件是否写入目标文件,以确保目标文件与源文件相同。 |
/q | 禁止显示 xcopy 消息。 |
/f | 复制时显示源和目标文件名。 |
/l | 生成要复制但不会主动复制文件的文件列表。 |
/克 | 当目标不支持加密时,创建解密 的目标 文件。 |
/d [:MM-DD-YYYY] | 仅复制指定日期或之后更改的源文件。 如果未包含 MM-DD-YYYY 值,xcopy 则复制所有比现有目标文件更新的源文件。 此命令行选项允许更新已更改的文件。 |
/u | 仅从目标上存在的源复制文件。 |
/我 | 如果 源 是目录或包含通配符和 目标 不存在, xcopy 则假定 目标 指定目录名称并创建新目录。 然后, xcopy 将所有指定的文件复制到新目录中。 默认情况下, xcopy 系统会提示指定 目标 是文件还是目录。 |
/s | 复制目录和子目录,除非它们为空。 如果省略 /s, xcopy 可在单个目录中工作。 |
/e | 复制所有子目录,即使它们为空。 将 /e 与 /s 和 /t 命令行选项配合使用。 |
/t | 仅复制子目录结构(即树),而不复制文件。 若要复制空目录,必须包含 /e 命令行选项。 |
/k | 复制文件,并在 目标 文件上保留只读属性(如果 源文件 上存在)。 默认情况下, xcopy 删除只读属性。 |
/r | 复制只读文件。 |
/小时 | 复制具有隐藏文件和系统文件属性的文件。 默认情况下, xcopy 不会复制隐藏文件或系统文件 |
/一个 | 仅复制设置了存档文件属性的 源文件 。 /a 不会修改源文件的存档文件属性。 有关如何使用 attrib 设置存档文件属性的信息,请参阅 相关链接。 |
/米 | 复制设置了存档文件属性的 源文件 。 与 /a 不同, /m 关闭源中指定的文件中的存档文件属性。 有关如何使用 attrib 设置存档文件属性的信息,请参阅 相关链接。 |
/n | 使用 NTFS 短文件或目录名称创建副本。 将文件或目录从 NTFS 卷复制到 FAT 卷或目标文件系统命名约定(即 8.3 个字符)时,需要 /n。 目标文件系统可以是 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 中添加。 |
/压缩 | 在文件传输期间请求网络压缩(如果适用)。 |
/[- ]稀疏 |
启用或禁用在复制过程期间保留文件的稀疏状态。 如果同时指定了这两个参数,则 /-稀疏重写 /稀疏。 |
/noclone | 不会尝试将区块克隆作为一种优化。 |
/? | 在命令提示符下显示帮助。 |
注解
使用 /z
如果在复制阶段失去连接(例如,如果服务器脱机断开连接),则会在重新建立连接后恢复。 /z 还显示每个文件完成的复制作百分比。
在 COPYCMD 环境变量中使用 /y 。
可以在 COPYCMD 环境变量中使用 /y 。 可以在命令行上使用 /-y 重写此命令。 默认情况下,系统会提示你覆盖。
复制加密的文件
将加密文件复制到不支持 EFS 的卷会导致错误。 首先解密文件,或将文件复制到支持 EFS 的卷。
追加文件
若要追加文件,请为目标指定单个文件,但源的多个文件(即,使用通配符或 file1+file2+file3 格式)。
目标默认值
如果省略 目标,该
xcopy
命令会将文件复制到当前目录。指定 目标 是文件还是目录
如果 目标 不包含现有目录,并且不以反斜杠结尾,将显示以下消息:
Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
如果希望将文件或文件复制到文件,请按 F。 如果希望将文件或文件复制到目录,请按 D。
可以使用 /i 命令行选项取消此消息,这会导致
xcopy
假定目标是目录(如果源是多个文件或目录)。xcopy
使用命令为目标文件设置存档属性该
xcopy
命令使用存档属性集创建文件,无论此属性是否在源文件中设置。 有关文件属性和 attrib 的详细信息,请参阅 相关链接。比较
xcopy
和diskcopy
如果磁盘包含子目录中的文件,并且想要将其复制到具有不同格式的磁盘,请使用
xcopy
该命令而不是diskcopy
。diskcopy
由于命令按跟踪复制磁盘,因此源磁盘和目标磁盘的格式必须相同。 该xcopy
命令没有此要求。 除非需要完整的磁盘映像副本,否则请使用xcopy
。内存不足错误
如果运行
xcopy
复制文件名路径大于 255 个字符的文件或文件夹,则可能会出现“内存不足”错误。退出代码
xcopy
若要处理返回的
xcopy
退出代码,请使用批处理程序中的 If 命令行上的 ErrorLevel 参数。 有关使用 if 处理退出代码的批处理程序的示例,请参阅 “相关”链接。 下表列出了每个退出代码和说明。退出代码 DESCRIPTION 0 文件已复制,且未出错。 1 找不到要复制的文件。 2 用户按 Ctrl+C 终止 xcopy
。4 出现初始化错误。 内存或磁盘空间不足,或者你在命令行上输入了无效的驱动器名称或语法无效。 5 发生磁盘写入错误。
例子
1. 若要将所有文件和子目录(包括任何空子目录)从驱动器 A 复制到驱动器 B,请键入:
xcopy a: b: /s /e
2. 若要在前面的示例中包括任何系统或隐藏文件,请添加 /h 命令行选项,如下所示:
xcopy a: b: /s /e /h
3. 若要使用自 1993 年 12 月 29 日以来更改的 \Rawdata 目录中的文件更新 \Reports 目录中的文件,请键入:
xcopy \rawdata \reports /d:12-29-1993
4. 若要更新上一示例中 \Reports 中存在的所有文件(无论日期如何),请键入:
xcopy \rawdata \reports /u
5. 若要获取要由上一命令复制的文件列表(即,无需实际复制文件),请键入:
xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out
文件 xcopy.out 列出了要复制的每个文件。
6. 若要将 \Customer 目录和所有子目录复制到网络驱动器 H:上的目录 \\Public\Address,请保留只读属性,并在 H:上创建新文件时提示,键入:
xcopy \customer h:\public\address /s /e /k /p
7. 若要发出上一个命令,请确保创建 xcopy
\Address 目录(如果不存在),并取消创建新目录时出现的消息,添加 /i 命令行选项,如下所示:
xcopy \customer h:\public\address /s /e /k /p /i
8. 可以创建批处理程序来执行 xcopy
作,并在发生错误时使用批处理( 如果 命令处理退出代码)。 例如,以下批处理程序对源和目标参数使用可替换参数 xcopy
:
@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit
若要使用前面的批处理程序复制 C:\Prgmcode 目录中的所有文件及其子目录以驱动 B,请键入:
copyit c:\prgmcode b:
命令解释器将 C:\Prgmcode 替换为 %1 和 B: for %2,然后使用 xcopy
/e 和 /s 命令行选项。 如果 xcopy
遇到错误,批处理程序将读取退出代码,并转到相应的 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并退出批处理程序。
9. 此示例复制所有非空目录,以及星号符号后具有关联文件扩展名的文件。
xcopy .\toc*.yml ..\..\Copy-To\ /S /Y
rem Output example.
rem .\d1\toc.yml
rem .\d1\d12\toc.yml
rem .\d2\toc.yml
rem 3 File(s) copied
在前面的示例中,此特定源参数值 .\toc*.yml 复制相同的 3 个文件,即使删除了两个路径字符 。\ 也是如此。 但是,如果从源参数中删除星号通配符,则不会复制任何文件,使其只是 .\toc.yml。