xcopy Windows下使用cmd命令将A文件夹copy到B文件夹
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]参数
C:\Users\sunfeng>xcopy /? 复制文件和目录树。 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J] [/EXCLUDE:file1[+file2][+file3]...] [/COMPRESS] source 指定要复制的文件。 destination 指定新文件的位置和/或名称。 /A 仅复制有存档属性集的文件, 但不更改属性。 /M 仅复制有存档属性集的文件, 并关闭存档属性。 /D:m-d-y 复制在指定日期或指定日期以后更改的文件。 如果没有提供日期,则只复制 源时间比目标时间新的文件。 /EXCLUDE:file1[+file2][+file3]... 指定含有字符串的文件列表。每个字符串 在文件中应位于单独的一行。如果任何 字符串与复制文件的绝对路径的任何部分相符, 则排除复制该文件。例如, 指定如 \obj\ 或 .obj 的字符串会分别 排除目录 obj 下面的所有文件或带有 .obj 扩展名的所有文件。 /P 创建每个目标文件之前均进行提示。 /S 复制目录和子目录,不包括空目录。 /E 复制目录和子目录,包括空目录。 与 /S /E 相同。可以用来修改 /T。 /V 验证每个新文件的大小。 /W 提示在复制前按键。 /C 即使有错误,也继续复制。 /I 如果目标不存在,且要复制多个文件, 则假定目标必须是目录。 /Q 复制时不显示文件名。 /F 复制时显示完整的源文件名和目标文件名。 /L 显示要复制的文件。 /G 允许将加密文件复制到 不支持加密的目标。 /H 隐藏文件和系统文件也会复制。 /R 覆盖只读文件。 /T 创建目录结构,但不复制文件。不 包括空目录或子目录。/T /E 包括 空目录和子目录。 /U 只复制已经存在于目标中的文件。 /K 复制属性。一般的 Xcopy 会重置只读属性。 /N 用生成的短名称复制。 /O 复制文件所有权和 ACL 信息。 /X 复制文件审核设置(隐含 /O)。 /Y 取消提示以确认要覆盖 现有目标文件。 /-Y 触发提示,以确认要覆盖 现有目标文件。 /Z 在可重新启动模式下复制网络文件。 /B 复制符号链接本身与链接目标。 /J 复制时不使用缓冲的 I/O。推荐复制大文件时使用。 /COMPRESS 如果适用,在传输期间请求网络 压缩。 开关 /Y 可以预先在 COPYCMD 环境变量中设置。 这可能被命令行上的 /-Y 覆盖。
注释
使用 /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 命令创建设置了存档属性的文件,无论该属性是否已在源文件中设置。
比较
xcopy和 diskcopy
如果磁盘在子目录中包含文件,而你想要将此磁盘复制到使用不同格式的磁盘,请使用 xcopy 命令而不是 diskcopy。 由于 diskcopy 命令逐磁道复制磁盘,因此源磁盘和目标磁盘必须使用相同的格式。 xcopy 命令没有这种要求。 除非需要复制完整磁盘映像,否则请使用 xcopy。
内存不足错误
如果运行 xcopy 复制文件名路径大于 255 个字符的文件或文件夹,则可能会出现“内存不足”错误。
xcopy的退出代码
若要处理 xcopy 返回的退出代码,请在批处理程序的 if 命令行中使用 ErrorLevel 参数。
下表列出了每个退出代码和描述。
| 退出代码 | 说明 |
|---|---|
| 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. 若要使用 \Rawdata 目录中自 1993 年 12 月 29 日以来更改的文件更新 \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 操作,并在发生错误时使用批处理 if 命令处理退出代码。 例如,以下批处理程序对 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:
命令解释器将 %1 替换为 C:\Prgmcode,将 %2 替换为 B:,然后将 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),则不会复制任何文件。
feng的博客



发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。