Board logo

标题: [文件操作] 求一批处理,比较两个文件夹(包含N多子目录和各种类型的文件)A和B下的所有文件 [打印本页]

作者: zltt520    时间: 2019-4-4 11:22     标题: 求一批处理,比较两个文件夹(包含N多子目录和各种类型的文件)A和B下的所有文件

求大神帮忙,比较两个文件夹(包含N多子目录和各种类型的文件)A和B下的所有文件,A的子目录和文件个数都要大于B的,大部分是一致的,如果A里有而B里没有的,则删除A里的文件以及空文件夹(包括父空目录);其中比较文件是否一致不能只比较文件名,是需要比较文件大小(或二进制比较都可以)。简言之就是把A里多的删除后保持和B的一致,不能有空文件夹。

非常感谢!
作者: zaqmlp    时间: 2019-4-4 12:15

同名不同大小怎么处理呀?B有A没有怎么处理呀?
作者: zltt520    时间: 2019-4-4 14:55

回复 2# zaqmlp


    非常感谢,B有的A一定会有,就是会有同名文件在不同子目录下,而大小和文件内容是不同的,如果只比对文件名就达不到删除的效果,或者可以比对相同路劲下文件名也相同,则保留,如果路劲不同,文件名同的,也删除A里的,我现在遇到的问题就是同名文件A里有几个的时候,而路劲不同,我删不掉,谢谢!
作者: zaqmlp    时间: 2019-4-4 15:34

回复 3# zltt520
  1. robocopy "D:\B"  "D:\A" /mir
复制代码

作者: xczxczxcz    时间: 2019-4-4 16:41

没看明白,是不是把A删除,再把B的内容复制到A就一致了。
作者: zltt520    时间: 2019-4-4 17:05

回复 4# zaqmlp

非常感谢,但我不能复制B的到A,需求是只能比较,不可以用B的去覆盖A,其业务场景是B是我提交的版本发布包,但我们投产的步骤里有专门的部门负责核实我提供的B是不是对的,他验证的办法是用我的源代码在他的环境下编译生成全量的A后和我提供的B进行二进制比较,但我提供的B一般都是增量的,所以就需要把全量的A里多的删除,如果手动一个个删除就很费劲,负责比较的人管了上百套系统,我每次上线时配合他比较都很费劲,就想用bat去直接删除他生成的A里多余的文件,保持和我提供的B的格式一样,然后他再做比较A和B。
作者: zaqmlp    时间: 2019-4-4 17:34

回复 6# zltt520
  1. @echo off
  2. set info=互助互利,代码可用,支付宝扫码头像,感谢赞助
  3. rem 有问题,加QQ956535081及时沟通
  4. title %info%
  5. start mshta VBScript:Execute("msgbox(""%info%""):close")
  6. cd /d "%~dp0"
  7. set "文件夹1=D:\test\A"
  8. set "文件夹2=D:\test\B"
  9. for /f "delims=" %%a in ('dir /a-d/b/s "%文件夹1%"') do (
  10.     set "A_file=%%a"
  11.     setlocal enabledelayedexpansion
  12.     set "B_file=!A_file:%文件夹1%=%文件夹2%!"
  13.     if not exist "!B_file!" (
  14.         echo;"!A_file!"
  15.         del /a /f /q "!A_file!"
  16.     )
  17.     endlocal
  18. )
  19. for /f "delims=" %%a in ('dir /ad/b/s "%文件夹1%"^|sort /+65535') do (rd "%%a" 2>nul)
  20. pause
复制代码

作者: xczxczxcz    时间: 2019-4-4 20:20

纯比较文件用哈希很快的。
作者: zltt520    时间: 2019-4-8 08:56

回复 7# zaqmlp

非常非常感谢感谢,支付宝已经意思意思,!




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