Windows下比较两个大文件内容是否相同,有什么好工具?

发布于 2021-11-26 15:24:39 字数 50 浏览 719 评论 4

超过2个G的

Beyond Compare什么打开是不是会很慢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

回眸一笑 2021-11-26 20:30:46

是否相同. 如果大小不一样,肯定不同. 大小一样,做个md5,sha,crc,方法,工具多了去了.

叹沉浮 2021-11-26 20:18:04

直接MD5对比是否相同啊

柳若烟 2021-11-26 16:57:46

如果只是比较是否相同用哈希工具比较一下就可以了,

Beyond Compare 会显示差异内容打开可能有点慢。

用AAuto写的小工具试了一下计算出2GB文件MD5,SHA1,CRC32等哈希值耗时1分钟

源代码:

import win.ui;
/*DSG{{*/
var winform = ..win.form(text="AAuto Hasher - 计算文件的MD5,SHA1,CRC32校验值";right=479;bottom=300;acceptfiles=1)
winform.add(
progress={cls="progress";left=8;top=283;right=472;bottom=293;db=1;dl=1;dr=1;edge=1;max=100;min=0;z=1};
richedit={cls="richedit";left=8;top=25;right=472;bottom=273;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;readonly=1;vscroll=1;wrap=1;z=2};
static={cls="static";text="请从外部拖动文件到下面的文本框中:";left=13;top=5;right=336;bottom=21;dt=1;transparent=1;z=3}
)
/*}}*/

import crypt;
genHash = function ( szPath ) { 
 	
	var file,err =  io.open(szPath, "rbR");//R 随机优化
	if(!file) {
		winform.richedit.appendText( "打开文件失败:" , szPath , 'n',err , 'n' );
		return;
	}
 
 	bufsize = 0xA00000;
 	var buffer = raw.malloc( bufsize ); 
 	winform.progress.max = file.size( bufsize );
 	winform.progress.pos = 0;
	winform.progress.step = 1; 
	 
	var crc32;
	var md5 = crypt().createHashByMd5();
	var sha1 = crypt().createHashBySha1();
	 
	winform.richedit.appendText( "正在计算哈希值:" , szPath , 'n'); 
	while( 
	    var readSize;
	    readSize = file.readBuffer(buffer); //读文件
	    readSize
	) {
		md5.hashBuffer(buffer,readSize);
		sha1.hashBuffer(buffer,readSize); 
		crc32 = string.crc32(buffer,crc32,readSize);
		
		win.peekPumpMessage();
		winform.progress.stepIt();
	}  
	file.close();
	
	winform.richedit.appendText(
		'MD5:t' , md5.getHexValue() , 'n',
		'SHA1:t', sha1.getHexValue(), 'n',
		'CRC32:t', ..string.format("%X",crc32 ), 'n',
		string.repeat(40, "-") , 'n'
	);
}

winform.wndproc = function(hwnd,message,wParam,lParam){
	select(message) {
		case 0x233/*_WM_DROPFILES*/ {
			var szPath = win.getDropFile(wParam);
			for (k,v in szPath) {
				winform.modifyStyleEx( 0x10/*_WS_EX_ACCEPTFILES*/,);    
				genHash( v );
				winform.modifyStyleEx( ,0x10/*_WS_EX_ACCEPTFILES*/);
			}
		}
	}
}

winform.show();
win.loopMessage();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文