Board logo

标题: [文本处理] 批处理BAT如何只复制不存在的文件? [打印本页]

作者: gannh    时间: 2014-4-24 17:02     标题: 批处理BAT如何只复制不存在的文件?

现在有两个文件夹A和B,请问如何用批处理文件将A文件夹对比B文件夹不存在的文件复制到B文件夹?谢谢
作者: yu2n    时间: 2014-4-24 20:30

  1. set "a=c:\A"
  2. set "b=D:\B"
  3. xcopy /c /d /e /i /v "%a%" "%b%"
复制代码
C:\Users\yu2n>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]...]
  /D:m-d-y     复制在指定日期或指定日期以后更改的文件。
               如果没有提供日期,只复制那些
               源时间比目标时间新的文件。
  /E           复制目录和子目录,包括空目录。
               与 /S /E 相同。可以用来修改 /T。
  /V           验证每个新文件的大小。
  /C           即使有错误,也继续复制。
  /I           如果目标不存在,且要复制多个文件,
               则假定目标必须是目录。

作者: gannh    时间: 2014-4-24 22:49

谢谢yu2n指点
作者: terse    时间: 2014-4-25 00:33

另外也可试下 replace
  1. @echo off
  2. set "ph1=c:\A"
  3. set "ph2=D:\B"
  4. replace /a "%ph1%\*" "%ph2%"
  5. pause
复制代码

作者: CrLf    时间: 2014-4-25 01:08

回复 4# terse


    冷知识,学习了...刚学的时候用了几次 replace,然后搁置一百年
作者: zhanglei1371    时间: 2014-4-25 08:35

回复 2# yu2n


    这个似乎不能做到Lz的要求吧,加D只是对日期进行了限定
作者: CrLf    时间: 2014-4-25 10:14

回复 6# zhanglei1371


我在想似乎可以用 /EXCLUDE,不过存在误判可能。
  1. dir /b /a-d b\>排除.txt&xcopy /EXCLUDE:排除.txt a\* b\
复制代码
还是 replace 简单靠谱




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2