Board logo

标题: [文本处理] 批处理怎样找出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

原帖由 hfg1977 于 2010-8-10 17:48 发表
根据楼主要求今天写了一个
请到下面地址查看:
http://bbs.bathome.net/viewthread.php?tid=8907&extra=page%3D1&frombbs=1


呵呵,谢谢。
不过我不需要其他的MD5计算软件。
软件我有,值能计算出。

只需要利用批处理来 实现对MD5值的分析,提取。
作者: a6c123    时间: 2010-8-11 14:16

  1. @echo off
  2. set MD5列表="MD5.txt"
  3. set 重复列表="重复MD5.txt"
  4. SetLocal EnableDelayedExpansion
  5. :: 文件名中的感叹号会丢失
  6. >!重复列表! (
  7.     for /f "tokens=1,*" %%a in (' sort !MD5列表! ') do (
  8.         if "%%a"=="!LastLine:~0,32!" (
  9.             if not defined MD5_!LastLine:~0^,32! (
  10.                 set MD5_!LastMD5!=1
  11.                 echo -------------
  12.                 echo !LastLine!
  13.             )
  14.             echo %%a %%b
  15.         ) else (
  16.             set LastLine=%%a %%b
  17.         )
  18.     )
  19. )
复制代码
输出的是重复列表。如果只需要重复多出来的列表,请用楼下的代码。

[ 本帖最后由 a6c123 于 2010-8-11 15:02 编辑 ]
作者: terse    时间: 2010-8-11 14:23

  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "tokens=1* delims=* " %%i in ('sort "MD5.txt"') do (
  3.     if "%%i" equ "!str!" echo %%j
  4.     set "str=%%i"
  5. )
  6. pause
复制代码





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