fdh386624334 发表于 2009-9-30 15:25:47

文件比较

本帖最后由 fdh386624334 于 2009-10-12 08:45 编辑

我是一个新手!刚学这个,也许问出来的问题对你们来说很菜,但是我还是希望你们能给我一些意见。
   我目前有两个XML的文件,11.xml,22.xml。文件里有相同的内容,也有不同的。我想写个脚本就是比较这两个文件,要是文件里有相同的就不说了,要是有不相同的话就生成一个log文件,都记录在这个文件里。
   现在不知道能不能实现,也不知道用那些函数,希望你们给我一些意见或者给我一些提示!

guanjl 发表于 2009-9-30 15:46:52

用批处理FC 应该可以

fdh386624334 发表于 2009-10-2 20:25:54

我的问题是不是真的很菜呀,就没人给我解答一下么?

afan 发表于 2009-10-2 20:37:15

本帖最后由 afan 于 2009-10-2 20:45 编辑

2L说的dos命令就可以吧Run(@ComSpec & ' /c fc 11.xml 22.xml > result.log', '', 0)

netegg 发表于 2009-10-3 07:54:13

给你个函数吧,不过没看明白,自己想想吧,纯autoit写的

fdh386624334 发表于 2009-10-4 10:10:04

4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了?

fdh386624334 发表于 2009-10-4 10:11:01

5# netegg


呵呵,我也看了,太深奥了,我这初学者看那个还是比较空难的!

afan 发表于 2009-10-4 10:23:19

4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了?
fdh386624334 发表于 2009-10-4 10:10 http://www.autoitx.com/images/common/back.gif
生成个空文件夹?怎么可能~ 要不你上传你的测试文件大家试试

ac5474012 发表于 2009-10-4 12:41:33

你是说比较不同,把不同的部分返回上来,还是如果有不同就返回一个提示?如果是返回一个提示那md5cr什么的就可以了,而如果是返回不同的部分那还是先把你的文件传上来,我们实验实验再说。

fdh386624334 发表于 2009-10-9 09:15:07

本帖最后由 fdh386624334 于 2009-10-9 09:48 编辑

谢谢大家的解答,由于那几天的放假,我上网不是很方便。所以没能及时的对回答的问题做出回应。希望大家能够谅解!   我把文件已经上传上来了!
把那个au3的后缀改成xml再比较!

wisly 发表于 2009-10-9 11:24:00

不用上传文件了,举个例子不就行了
文件1:
aaa
bbb
ccc
文件2:
aaaa
bb
b
ccc
你希望得到的log文件应该是什么样子的?

fdh386624334 发表于 2009-10-9 13:37:53

11# wisly


只有列出每一行的不同之处就行啦。
例如你的这个例子。文件1和文件2的第一行和第二行都不一样,记成日志就可以了。

netegg 发表于 2009-10-9 15:21:49

说半天还是没说明白,如果单看行,没一行相同的

fdh386624334 发表于 2009-10-10 10:27:52

本帖最后由 fdh386624334 于 2009-10-10 10:28 编辑

哎!
文件1
111
222
333
文件2
111
222
666
这俩个文件就是第三行不一样,把这一行弄到log里就行了。

maker 发表于 2009-10-10 10:52:23

本帖最后由 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
查看完整版本: 文件比较