标题: [文件操作] 求一批处理,比较两个文件夹(包含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 - 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 - @echo off
- set info=互助互利,代码可用,支付宝扫码头像,感谢赞助
- rem 有问题,加QQ956535081及时沟通
- title %info%
- start mshta VBScript:Execute("msgbox(""%info%""):close")
- cd /d "%~dp0"
- set "文件夹1=D:\test\A"
- set "文件夹2=D:\test\B"
- for /f "delims=" %%a in ('dir /a-d/b/s "%文件夹1%"') do (
- set "A_file=%%a"
- setlocal enabledelayedexpansion
- set "B_file=!A_file:%文件夹1%=%文件夹2%!"
- if not exist "!B_file!" (
- echo;"!A_file!"
- del /a /f /q "!A_file!"
- )
- endlocal
- )
- for /f "delims=" %%a in ('dir /ad/b/s "%文件夹1%"^|sort /+65535') do (rd "%%a" 2>nul)
- pause
复制代码
作者: xczxczxcz 时间: 2019-4-4 20:20
纯比较文件用哈希很快的。
作者: zltt520 时间: 2019-4-8 08:56
回复 7# zaqmlp
非常非常感谢感谢,支付宝已经意思意思,!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |