【定时操作】之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

将复制目录和子目录,除非它们为空。 如果省略/sxcopy工作单个目录中。

/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 命令创建具有存档属性设置,文件,无论是否在源文件中设置此属性。 有关文件属性和属性的详细信息,请参阅其他参考 

      • 比较xcopydiskcopy 

        如果您有包含子目录中的文件的磁盘,并且您要将其复制到具有不同的格式的磁盘,则使用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 %1b:替换为%2,然后使用xcopy/e /e/s命令行选项。 Xcopy Xcopy 遇到错误,如果批处理程序读取的退出代码转到适当的等级 IF语句中指定的标签,显示相应的信息并退出批处理程序。

posted on 2014-01-10 12:45  毛毛_Roc  阅读(849)  评论(0编辑  收藏  举报

导航