找回密码
 加入
搜索
查看: 4756|回复: 18

文件比较

[复制链接]
发表于 2009-9-30 15:25:47 | 显示全部楼层 |阅读模式
本帖最后由 fdh386624334 于 2009-10-12 08:45 编辑

我是一个新手!刚学这个,也许问出来的问题对你们来说很菜,但是我还是希望你们能给我一些意见。
     我目前有两个XML的文件,11.xml,22.xml。文件里有相同的内容,也有不同的。我想写个脚本就是比较这两个文件,要是文件里有相同的就不说了,要是有不相同的话就生成一个log文件,都记录在这个文件里。
     现在不知道能不能实现,也不知道用那些函数,希望你们给我一些意见或者给我一些提示!
发表于 2009-9-30 15:46:52 | 显示全部楼层
用批处理  FC 应该可以
 楼主| 发表于 2009-10-2 20:25:54 | 显示全部楼层
我的问题是不是真的很菜呀,就没人给我解答一下么?
发表于 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)
发表于 2009-10-3 07:54:13 | 显示全部楼层
给你个函数吧,不过没看明白,自己想想吧,纯autoit写的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-10-4 10:10:04 | 显示全部楼层
4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了?
 楼主| 发表于 2009-10-4 10:11:01 | 显示全部楼层
5# netegg


呵呵,我也看了,太深奥了,我这初学者看那个还是比较空难的!
发表于 2009-10-4 10:23:19 | 显示全部楼层
4# afan
这个我试了,比较出来的日志是个空文件夹呀?这是怎么回事了?
fdh386624334 发表于 2009-10-4 10:10

生成个空文件夹?怎么可能~ 要不你上传你的测试文件大家试试
发表于 2009-10-4 12:41:33 | 显示全部楼层
你是说比较不同,把不同的部分返回上来,还是如果有不同就返回一个提示?如果是返回一个提示那md5cr什么的就可以了,而如果是返回不同的部分那还是先把你的文件传上来,我们实验实验再说。
 楼主| 发表于 2009-10-9 09:15:07 | 显示全部楼层
本帖最后由 fdh386624334 于 2009-10-9 09:48 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-10-9 11:24:00 | 显示全部楼层
不用上传文件了,举个例子不就行了
文件1:
aaa
bbb
ccc
文件2:
aaaa
bb
b
ccc
你希望得到的log文件应该是什么样子的?
 楼主| 发表于 2009-10-9 13:37:53 | 显示全部楼层
11# wisly


只有列出每一行的不同之处就行啦。
例如你的这个例子。文件1和文件2的第一行和第二行都不一样,记成日志就可以了。
发表于 2009-10-9 15:21:49 | 显示全部楼层
说半天还是没说明白,如果单看行,没一行相同的
 楼主| 发表于 2009-10-10 10:27:52 | 显示全部楼层
本帖最后由 fdh386624334 于 2009-10-10 10:28 编辑

哎!
文件1
111
222
333
文件2
111
222
666
这俩个文件就是第三行不一样,把这一行弄到log里就行了。
发表于 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威望 +20 金钱 +189 贡献 +99 收起 理由
kn007 + 20 + 189 + 99 感谢提供

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 07:19 , Processed in 0.237040 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表