2014-11-24 74 views
1

我在我的tcl/tk项目中实现了使用fcopy将文件从Windows机器传输到VM的功能。现在问题是相同的文件被重复复制,这是不必要的。匹配的Tcl文件校验和

所以我必须检查目标文件夹中是否存在任何具有相同名称的文件。如果是,那么在中止复制过程之前,我必须确保文件内容不匹配。我知道可以使用校验和,但不知道如何在TCL中实现校验和匹配。请指导。

回答

1

MD5例如

md5.tcl

#!/usr/bin/tclsh 

package require md5 

set fp [open "md5.tcl" r] 
set file_data [read $fp] 
close $fp 

set checksum [md5::md5 -hex $file_data] 
puts $checksum 

输出:

64F63E82282789ACB8F9271CBF35E8B5 
+0

适用于windows和linux vm文件。 :) – 2014-12-03 10:05:12

1

Tcllib在该部分哈希,校验和和加密具有您(可能)需要的功能。例如checksum

+0

我怀疑是MD5或(慢)SHA1会更适合这样的事情。让他们在同一个地方。 – 2014-11-25 00:46:58

1

,你也可以使用UNIX命令

cksum 

这能很好地与TCL调用作为

exec cksum <file> 

checksum

+0

工作正常,但解决了我的一半问题。我必须将Windows中文件的校验和与linux vm中的文件进行比较。两者都应该为同一个文件生成相同的校验和。 – 2014-12-03 10:07:30