【batch】批处理中Copy与Xcopy的区别

###Date: 2017/6/20

###Author: Soaringlee

1):copy不能在有子目录存在的文件中拷贝文件的同时重命名此文件名(注:这里C:为根目录,bat为子目录),而xcopy能,不过会出现提示,当然你可以加参数而不使它提示。

C:\>copy c:\bat\hai.bat d:\bat\hello.bat 
提示:系统找不到指定的路径。 
已复制         0 个文件。 

但你可以用 

C:\>copy c:\hai.bat d:\hell.bat 
已复制         1 个文件 

C:\>xcopy c:\bat\hai.bat d:\bat\hello.bat 
目标 D:\bat\hello.bat 是文件名 
还是目录名 
(F = 文件,D = 目录)? f 
C:\bat\hai.bat 
复制了 1 个文件 


2):copy命令能合并两个文件,而xcopy不能 

将文件1.txt和2.txt合并为3.txt 

 
copy /b c:\1.txt+2.txt c:\3.txt 

命令格式:copy /b 文件1+文件2+......文件N 合并后的文件名 
命令讲解: 使用“+”将多个相同或不同格式的文件合并为一个文件。 

小提示: 

1.在尾部隐藏了文本数据的图片文件,在使用了其他文件编辑器并保存后,隐藏的文本数据有可能丢失。 
2.MP3文件在使用此方法连接后,就可以实现连续播放。 
3.合成图片/歌曲这样的二进制文件必须使用/b参数(b代表Binaty,二进制),否则将会失败;另一个合并参数是/a(ASCII,文本文件),只能用于纯文本的合并。两参数不能同时使用,二进制方式可以合并文本文件和二进制文件,而文本方式用于纯文本的合并。 

3):C:\>copy c:\bat\hai d:\hello 

命令解释:将C盘bat目录下所有文件复制到D盘hello目录下。你如果要选择指定定类型的文件(如txt文件)到D:\hello下的,则可以用C:\>copy c:\bat\hai\*.txt d:\hello 
注:不会复制子目录下的文件及文件夹。D盘hello目录必须存在 

C:\>xcopy c:\bat\hai d:\hello /e/h 

命令解释:将C盘bat文件夹拷进D盘hello文件夹,包括所有子目录及具有隐藏和系统文件属性的文件。无论hello文件夹是否已经存在,如果不存在的话系统会提示你创建。 

注:/e表示复制所有子目录,包括空目录。/h复制具有隐藏和系统文件属性的文件。


copy命令用法:

E:\Work\Project_Experience\bat_script>copy /?
将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
     [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

  source       指定要复制的文件。
  /A           表示一个 ASCII 文本文件。
  /B           表示一个二进位文件。
  /D           允许解密要创建的目标文件
  destination  为新文件指定目录和/或文件名。
  /V           验证新文件写入是否正确。
  /N           复制带有非 8dot3 名称的文件时,
               尽可能使用短文件名。
  /Y           不使用确认是否要覆盖现有目标文件
               的提示。
  /-Y          使用确认是否要覆盖现有目标文件
               的提示。
  /Z           用可重新启动模式复制已联网的文件。
/L           如果源是符号链接,请将链接复制
               到目标而不是源链接指向的实际文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
这可能会被命令行上的 /-Y 替代。除非 COPY
命令是在一个批处理脚本中执行的,默认值应为
在覆盖时进行提示。

要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或 file1+file2+file3 格式)。

xcopy命令用法:

E:\Work\Project_Experience\bat_script>xcopy /?
复制文件和目录树。

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
                           [/EXCLUDE:file1[+file2][+file3]...]

  source       指定要复制的文件。
  destination  指定新文件的位置和/或名称。
  /A           仅复制有存档属性集的文件,但不更改属性。
  /M           仅复制有存档属性集的文件,并关闭存档属性。
  /D:m-d-y     复制在指定日期或指定日期以后更改的文件。
               如果没有提供日期,只复制那些源时间比目标时间新的文件。
  /EXCLUDE:file1[+file2][+file3]...
               指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行
               如果任何字符串与复制文件的绝对路径的任何部分相符,则排除复制
               该文件。例如,指定如 \obj\ 或 .obj 的字符串会分别排除目录
               obj 下面的所有文件或带有 .obj 扩展名的所有文件。
  /P           创建每个目标文件之前提示您。
  /S           复制目录和子目录,不包括空目录。
  /E           复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /
  /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。推荐复制大文件时使用。

开关 /Y 可以预先在 COPYCMD 环境变量中设置。
这可能被命令行上的 /-Y 覆盖。


你可能感兴趣的:(【batch】批处理中Copy与Xcopy的区别)