标题: [文本处理] 批处理怎样找出MD5值相同的文件? [打印本页]
作者: devil2001 时间: 2010-8-5 16:14 标题: 批处理怎样找出MD5值相同的文件?
本帖最后由 pcl_test 于 2016-11-10 13:36 编辑
经常做重复的工作,特求代码!
文件夹里有很多 文件名 杂乱无规律的图片。
我一般是用 MD5 查看工具来判定图片是否一样,重复。
这样,对比 MD5 值就很复杂了。
特求高手编写一个CODE:
我可以把所有得到的 MD5 值复制到一个TXT文件中
一个 MD5 值 占据一行
找出这个TXT文件中 所有相同的MD5值,然后 可以用什么可以实现的方式 让我看到。(高亮?或者单独导出到另外一个文件)
作者: caruko 时间: 2010-8-5 17:38
把每个MD5值设为变量就行了
然后输入为html格式,就能加颜色
作者: devil2001 时间: 2010-8-5 23:16
本人新手,还望 2 楼高手明示!把代码给我写出来吧…谢谢!
作者: devil2001 时间: 2010-8-10 12:53
自己再次顶起,高手可能觉得很简单,
可我是小菜,所以高手给个代码。
作者: FOR 时间: 2010-8-10 15:44
一行一个MD5值,你同样不知道它们对应的文件名是什么呀
作者: TX_kakashi 时间: 2010-8-10 16:24
lz可否提供个查看md5的第三方软件?
作者: hfg1977 时间: 2010-8-10 17:48
根据楼主要求今天写了一个
请到下面地址查看:
http://bbs.bathome.net/viewthrea ... e%3D1&frombbs=1
作者: devil2001 时间: 2010-8-10 22:03
谢谢楼上,回头上网考下来看看!
6楼要工具的,下次上网我会发上来。
作者: devil2001 时间: 2010-8-11 13:01 标题: 回复 6楼 的帖子
这样的很多。
EasyMD5,文件小,绿色,支持的格式也很多。
擅长处理 多 而 小 的文件,进行MD5值对比。
能导出 MD5值 列表。
缺点:不是单个文件,处理MD4值时,需用其他DLL,EXE支持。
处理大的文件,速度有点慢。
软件GOOGLE下,就能下到。
对于大的文件,我推荐HASH,单文件,绿色无需安装,最重要的是,处理大文件速度快。
http://keir.net/hash.html
[ 本帖最后由 devil2001 于 2010-8-11 13:02 编辑 ]
作者: devil2001 时间: 2010-8-11 13:04 标题: 回复 5楼 的帖子
MD5值导出到TXT后格式如下:
CE764962F85824D0FF28108CE3C3A57B *201007251110.jpg
A0A7FADCF96849D1488F5A459DE3DBF7 *201007251111.jpg
4FBC479A1036BBD4AFE102C48C224DAA *201007251112.jpg
C8C4107FE3DBA2844A885E568B4FFB77 *201007251113.jpg
8E5FC61B8F7F889649C14FEE05533EF4 *201007251114.jpg
8CE42B655E3202CACA07BFBC00293D22 *201007251115.jpg
8375C7E4D5BD22872F9FEA3B59379FD8 *201007251108.jpg
5ADFB6160C66FCF4DA6D16A0A6E4CDD7 *201007251109.jpg
作者: devil2001 时间: 2010-8-11 13:07
呵呵,谢谢。
不过我不需要其他的MD5计算软件。
软件我有,值能计算出。
只需要利用批处理来 实现对MD5值的分析,提取。
作者: a6c123 时间: 2010-8-11 14:16
- @echo off
- set MD5列表="MD5.txt"
- set 重复列表="重复MD5.txt"
-
- SetLocal EnableDelayedExpansion
- :: 文件名中的感叹号会丢失
-
- >!重复列表! (
- for /f "tokens=1,*" %%a in (' sort !MD5列表! ') do (
- if "%%a"=="!LastLine:~0,32!" (
- if not defined MD5_!LastLine:~0^,32! (
- set MD5_!LastMD5!=1
- echo -------------
- echo !LastLine!
- )
- echo %%a %%b
- ) else (
- set LastLine=%%a %%b
- )
- )
- )
复制代码
输出的是重复列表。如果只需要重复多出来的列表,请用楼下的代码。
[ 本帖最后由 a6c123 于 2010-8-11 15:02 编辑 ]
作者: terse 时间: 2010-8-11 14:23
- @echo off&setlocal EnableDelayedExpansion
- for /f "tokens=1* delims=* " %%i in ('sort "MD5.txt"') do (
- if "%%i" equ "!str!" echo %%j
- set "str=%%i"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |