【定时操作】之XCOPY
碰到个客户,需要在早上9点上线一样产品,没办法,真没起,想来想去想到了windows的任务计划程序,但是貌似那货也没有复制粘贴功能,只能跑个程序,好吧,只好自己再折腾个XCOPY,今早起来,一切OK,所以来这里分享下。
一、Demo
XCOPY "C:\xcopytest_1\*" "C:\xcopytest_2" /S /Y
这句很简单,从源地址拷到新地址,全部复制,并且直接覆盖不提示。
二、官方文档
2.1 网址
微软官方:http://technet.microsoft.com/zh-cn/library/cc771254
2.2 语法
Xcopy <Source>[<Destination>][] /w[] /p[] /c[] /v[] /q[] /f[] /l[] /g[/d [: 年-月-日]][] /u[/i][/s [/e]][] /t[] /k[] /r[] /h[{/a | /m}][n] /[] /o[] /x[/ 排除: FileName1 [+ [FileName2]] [+ [没有]] [{/y | /-y}] [/z] [/b] [/j]
2.3 参数
参数 | 说明 |
---|---|
<Source> |
必需。 指定要复制的文件的名称和位置。 该参数必须包含驱动器或路径。 |
[<Destination>] |
指定要复制的文件的目标位置。 该参数可以包含驱动器号和冒号、 目录名、 文件名或它们的组合。 |
/w |
将显示以下消息,并在开始复制文件之前将等待您的响应: 按任意键可开始复制文件 |
/p |
将提示您确认是否要创建每个目标文件。 |
/c |
忽略错误。 |
/v |
写入目标文件,以确保目标文件与源文件相同时,请验证每个文件。 |
/q |
取消xcopy消息的显示。 |
/f |
在复制时将显示源和目标文件的名称。 |
/l |
显示要复制的文件的列表。 |
/g |
当目标不支持加密,请创建解密的目标文件。 |
/d [: 年-月-日] |
副本的源或指定日期之后更改的文件。 如果不包含年-月-日值, xcopy复制比现有目标文件更新的所有源文件。 Destination 此命令行选项允许您更新已更改的文件。 |
/u |
将文件复制仅存在于目标的源。 |
/i |
如果源是一个目录,或包含通配符,目标不存在, xcopy将假定目标指定目录的名称和创建新的目录。 然后, xcopy将所有指定的文件复制到新目录。 默认情况下,通过xcopy会提示您指定目标是文件或目录。 |
/s |
将复制目录和子目录,除非它们为空。 如果省略/s, xcopy工作单个目录中。 |
/e |
复制所有子目录,即使它们为空)。 /E /E 使用/s和/t命令行选项。 /t |
/t |
子目录结构 (树),不复制文件的副本。 要复制空目录,必须包含/e命令行选项。 |
/k 选项 |
复制文件,并且如果存在的源代码文件保留目标文件的只读属性。 默认情况下,通过xcopy删除只读属性。 |
/r |
将只读文件。 |
/h |
将文件复制包含隐藏和系统文件属性。 默认情况下,通过xcopy没有复制隐藏文件或系统文件 |
/a |
具有其归档副本仅源代码文件的文件属性集。 /a不修改源文件的存档文件属性。 有关如何使用属性来设置存档文件属性的信息,请参阅其他参考。 |
/m |
将源设置存档文件属性的文件。 /A /A ,与/m关闭存档文件属性中指定的源中的文件。 有关如何使用属性来设置存档文件属性的信息,请参阅其他参考。 |
/n |
通过使用 NTFS 短文件或目录的名称创建副本。 /n是必需的文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统上需要 FAT 文件系统命名约定 (即 8.3 字符)。 目标 目标 文件系统可以是 FAT 或 NTFS)。 |
/o |
复制文件所有权与随机访问控制列表 (DACL) 信息。 |
/x |
复制文件审核设置和系统访问控制列表 (SACL) 信息 (隐含/o)。 |
/ exclude:FileName1[+[FileName2][+[FileName3](…)] |
指定文件的列表。 必须指定至少一个文件。 每个文件将包含搜索字符串,其中每个文件中单独的一行上的字符串。 当要复制的文件的绝对任何的路径部分匹配的任何字符串时,该文件将被复制的 excuded。 例如,如果指定字符串, \obj\ 或 .obj 将排除obj目录下的所有文件或具有.obj扩展名的所有文件。 |
/y |
禁止提示确认要覆盖现有的目标文件。 |
/-y |
会提示您确认要覆盖现有的目标文件。 |
/z |
可重启模式中通过网络复制。 |
/b |
将复制文件而不是符号的链接。 此参数是在 Windows Vista ® 中引入的。 |
/j |
将文件复制不进行缓冲。 建议使用非常大的文件。 此参数中添加了在 Windows Server ® 2008 R2 引入。 |
/? |
在命令提示符下显示帮助。 |
2.4 备注
- 使用/v
Windows XP 和 Windows Server 2003 家族产品的不使用此命令。 它仅用于保留兼容性与现有 MS-DOS 文件,但由于此功能是自动的因此在命令行上有任何影响。 - 使用/z
如果您在复制阶段中 (例如,如果服务器脱机切断连接) 的连接丢失,它会继续后您重新建立连接。 /z同时会显示每个文件完成的复制操作的百分比。 - 使用/y COPYCMD 环境变量中。
您可以使用/y COPYCMD 环境变量中。 您可以通过在命令行上使用/-y来覆盖该命令。 默认情况下,会提示您覆盖,除非xcopy从批处理脚本内运行。 - 复制加密的文件
将加密的文件复制到一个不支持 EFS 的结果中出现错误。 首先解密文件或将文件复制到支持 EFS 的卷。 - 添加文件
要附加的文件,请指定一个文件的目标,但源的多个文件 (即,通过使用通配符或 file1 + 文件 2 + 文件 3 格式)。 - 目标的默认值
如果省略目标, xcopy命令将文件复制到当前目录。 - 指定目标文件或目录
如果目标不包含现有的目录,并且不以反斜杠 (\) 结尾,则会出现以下消息:没有 <Destination>在目标系统上指定的文件名或目录名 (F = 文件,D = 目录) 吗?
如果所需的文件或文件复制到一个文件,请按 F。 如果所需的文件或文件复制到的目录,请按 D。
使用/i命令行选项,这会导致xcopy假定目标为目录,如果源是多个文件或目录,您可以取消此消息。
- 使用xcopy命令来设置存档属性的目标文件
Xcopy Xcopy 命令创建具有存档属性设置,文件,无论是否在源文件中设置此属性。 有关文件属性和属性的详细信息,请参阅其他参考。 - 比较xcopy和diskcopy
如果您有包含子目录中的文件的磁盘,并且您要将其复制到具有不同的格式的磁盘,则使用xcopy命令而不是diskcopy。 因为diskcopy命令会将磁盘磁道地复制,源和目标磁盘必须具有相同的格式。 Xcopy Xcopy 命令没有此要求。 使用xcopy ,除非您需要完整的磁盘图像副本。 - Xcopy的退出代码
要处理由xcopy返回退出代码,请在批处理程序中的如果命令行上使用错误级别参数。 处理退出代码,如果使用的批处理程序的一个示例,请参阅其他参考。 下表列出了每个退出代码和说明。
退出代码 | 说明 |
---|---|
0 |
文件复制没有错误。 |
1 |
不找到要复制的任何文件。 |
2 |
用户按下 CTRL + C 将终止xcopy。 |
4 |
出现初始化错误。 没有足够的内存或磁盘空间,或在命令行上输入了无效的驱动器的名称或无效的语法。 |
5 |
磁盘写入时出错。 |
2.5 示例
要从驱动器 A 将所有文件和子目录 (包括所有空的子目录) 都复制到驱动器 B,请键入:
xcopy 答: b: /s /e
若要在上面的示例包括任何系统或隐藏的文件,请按如下所示添加/h命令行选项:
xcopy 答: b: /s /e /h
要更新 \Reports 目录中的文件与自 1993 年 12 月 29 日以来已更改的文件 \Rawdata 目录中键入:
xcopy \rawdata \reports /d:12-29-1993年
要更新在上一示例中,日期,无论 \Reports 中存在的所有文件,请键入:
xcopy \rawdata \reports /u
若要获得前一个命令复制文件的列表 (也就是说,而不复制文件),类型:
xcopy \rawdata \reports /d:12-29-1993年 /l >xcopy.out
文件 xcopy.out 中列出了每个要复制的文件。
要复制目录 \\Public\Address 网络驱动器 h: 上的 \Customer 目录和所有子目录,请保留只读属性中,并上高:,类型创建一个新文件时,系统会提示:
xcopy \customer h:\public\address /s /e /k /p
要发出上一个命令,请确保xcopy创建 \Address 目录 (如果它不会存在,并禁止显示消息的情况下会出现您创建一个新目录中,添加/i命令行选项,如下所示:
xcopy \customer h:\public\address /s /e /k /p /i
您可以创建批处理程序执行xcopy操作,并使用if批处理命令时出现错误时处理退出代码。 例如,以下的批处理程序使用可替换的xcopy源和目标参数:
@ echo offrem COPYIT。BAT 传输所有文件中的所有子目录 ofrem 源驱动器或目录 (%1) destinationrem 驱动器或目录 (%2) xcopy %1 %2 /s /eif 错误级别 4 转到 lowmemoryif 错误级别 2 转到 abortif 错误级别 0 转至退出: lowmemoryecho 内存不足,无法复制文件 orecho 无效的驱动器或按 CTRL + C 结束复制 operation.goto 退出的 syntax.goto 命令行退出: abortecho: 退出
若要使用该批处理程序将 C:\Prgmcode 目录及其子目录中的所有文件都复制到驱动器 B,请键入:
copyit c:\prgmcode b:
命令解释程序将C:\Prgmcode%1 %1 和b:替换为%2,然后使用xcopy/e /e 和/s命令行选项。 Xcopy Xcopy 遇到错误,如果批处理程序读取的退出代码转到适当的等级 IF语句中指定的标签,显示相应的信息并退出批处理程序。