rongcong005 发表于 2008-10-17 21:40:28

关于用AU3比较文件的问题

有aaa.txt和bbb.txt两个文本,用cmd来比较比较两个文本是否相同,很简单:
echo n|comp aaa.txt bbb.txt |find "文件比较无误" && echo 文件相同 || echo 文件不相同
请问AU3里有类似cmd里的comp或者fc的函数吗?我看帮助里看了N遍都没发现。
如果没有,只能调用cmd来判断,那么如何将cmd输出的结果当作变量输出到AU3里?如将以上例子里的“echo 文件相同”或者“echo 文件不相同”变成一个变量赋值。即实现以下cmd的效果:
@echo off
echo n|comp aaa.txt bbb.txt |find "文件比较无误" && set qqq=文件相同 || set qqq=文件不相同
cls
echo %qqq%
pause
exit
请各位指教。
谢谢!!

liongodmien 发表于 2008-10-17 22:07:19

AU3里有字串比较函数,StringCompare

rongcong005 发表于 2008-10-17 22:29:13

看了StringCompare函数的帮助,如果要比较的话,是要逐行读出字符串,然后在进行比较,然后再读下一行,然后再比较,是这样的吧?可否一次读整个文本,然后再比较?

rolaka 发表于 2008-10-17 22:48:46

用md5或者crc32来校验吧...

My2009 发表于 2009-7-10 13:11:43

能说的明白一点吗?急!!

lynfr8 发表于 2009-7-10 14:01:12

看了StringCompare函数的帮助,如果要比较的话,是要逐行读出字符串,然后在进行比较,然后再读下一行,然后再比较,是这样的吧?可否一次读整个文本,然后再比较?
rongcong005 发表于 2008-10-17 22:29 http://www.autoitx.com/images/common/back.gif
FileRead
从此前已打开的文本文件中读取指定数量的字符.

FileRead ( 文件名句柄 或者 "文件名" [, 数量] )


参数
文件句柄目标文件句柄,可由此前调用 FileOpen 函数的返回值获得。另外也可以直接使用目标文件名.数量[可选参数]指定要读取字符的数量。默认读取整个文件

是可以实现楼主的整体对比的要求的

ghostystep 发表于 2009-7-12 13:48:13

读取cmd命令可以参考autoit里面自带的例子

; Demonstrates StdoutRead()
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
Wend

MsgBox(0, "Debug", "Exiting...")

wangxi0414 发表于 2009-8-18 16:44:15

逐行比较式比较稳妥的
页: [1]
查看完整版本: 关于用AU3比较文件的问题