文件比较
本帖最后由 fdh386624334 于 2009-10-12 08:45 编辑我是一个新手!刚学这个,也许问出来的问题对你们来说很菜,但是我还是希望你们能给我一些意见。
我目前有两个XML的文件,11.xml,22.xml。文件里有相同的内容,也有不同的。我想写个脚本就是比较这两个文件,要是文件里有相同的就不说了,要是有不相同的话就生成一个log文件,都记录在这个文件里。
现在不知道能不能实现,也不知道用那些函数,希望你们给我一些意见或者给我一些提示! 用批处理FC 应该可以 我的问题是不是真的很菜呀,就没人给我解答一下么? 本帖最后由 afan 于 2009-10-2 20:45 编辑
2L说的dos命令就可以吧Run(@ComSpec & ' /c fc 11.xml 22.xml > result.log', '', 0) 给你个函数吧,不过没看明白,自己想想吧,纯autoit写的 4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了? 5# netegg
呵呵,我也看了,太深奥了,我这初学者看那个还是比较空难的! 4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了?
fdh386624334 发表于 2009-10-4 10:10 http://www.autoitx.com/images/common/back.gif
生成个空文件夹?怎么可能~ 要不你上传你的测试文件大家试试 你是说比较不同,把不同的部分返回上来,还是如果有不同就返回一个提示?如果是返回一个提示那md5cr什么的就可以了,而如果是返回不同的部分那还是先把你的文件传上来,我们实验实验再说。 本帖最后由 fdh386624334 于 2009-10-9 09:48 编辑
谢谢大家的解答,由于那几天的放假,我上网不是很方便。所以没能及时的对回答的问题做出回应。希望大家能够谅解! 我把文件已经上传上来了!
把那个au3的后缀改成xml再比较! 不用上传文件了,举个例子不就行了
文件1:
aaa
bbb
ccc
文件2:
aaaa
bb
b
ccc
你希望得到的log文件应该是什么样子的? 11# wisly
只有列出每一行的不同之处就行啦。
例如你的这个例子。文件1和文件2的第一行和第二行都不一样,记成日志就可以了。 说半天还是没说明白,如果单看行,没一行相同的 本帖最后由 fdh386624334 于 2009-10-10 10:28 编辑
哎!
文件1
111
222
333
文件2
111
222
666
这俩个文件就是第三行不一样,把这一行弄到log里就行了。 本帖最后由 maker 于 2009-10-18 15:25 编辑
不知道是不是你想的结果,试试看,如果第一文件行数比第二文件行数少不会检测到第二文件的全部,不过可以通过改动来达到理想的效果,比如利用$line最后的变量来把2个文件颠倒一下检测$file = FileOpen("test1.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "Unable to open file.")
Exit
EndIf
$line = 1
While 1
$sL = FileReadLine($file, $line)
If @error = -1 Then
Exit
Else
$no = StrExists("test2.txt", $sL, $line)
If $no <> 1 Then MsgBox(0, "不同", $no)
$line += 1
EndIf
WEnd
FileClose($file)
Func StrExists($filename, $ExStr, $line)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; $filename = 要检测的目标文件 ;;;;
;;;; $ExStr = 要检测的字符串 ;;;;
;;;; $line = 要检测的目标行数 ;;;;
;;;; By:老刀 QQ:50665286 ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$efile = FileOpen($filename, 0)
If $efile = -1 Then
MsgBox(0, "错误", "Unable to open file.")
Exit
EndIf
$str = FileReadLine($efile, $line)
If @error = -1 Then
Return "Error = " & $ExStr & " -:- " & $str
ElseIf $str <> $ExStr Then
Return $ExStr & " -:- " & $str
ElseIf $str = $ExStr Then
Return 1
EndIf
FileClose($efile)
EndFunc ;==>StrExists
页:
[1]
2