aben_wang 发表于 2015-6-17 08:54:14

【请教】关于if then条件判断

本帖最后由 aben_wang 于 2015-6-17 09:08 编辑

用au3自动执行一个tool,这个tool大概会运行110s左右结束(会实时产生log)
我的本意是,打开tool以后,等待90S.然后检查log里是否有固定的字符串,如果有,证明tool已经运行完成。如果还没有,我等待10S后再检查一次,
代码已经完成,如下,能正常运行,但是我在做错误验证的时候,(字符串改成LOG里没有的),程式也会说找到了。然后正常关闭$TITLE = "MfgTool_MultiPanel (Library: 2.4.1)"
$File = FileOpen("MfgTool.txt")
$Str = ("echo Update Complete!")   ;再做错误验证的时候,我把这里改成log里面没有的字符串,程式没有跳出MsgBox
$String = FileRead($File)

Run("MfgTool2.exe")
WinWait("")
WinActivate("")
WinMove("","",0,0)
Sleep(300)
MouseClick("left",313,153,1)
Sleep(90000)



If StringInStr($string,$str) = 0Then       
        MouseClick("left",313,153,1)
    Sleep(700)
    MouseClick("left",412,153,1)
Elseif Sleep(5000)
       If StringInStr($string,$str) = 0Then       
       MouseClick("left",313,153,1)
   Sleep(700)
   MouseClick("left",412,153,1)
   Else
       MsgBox(0,"","Fail")
       
EndIf
EndIf

WinClose($TITLE)

haijie1223 发表于 2015-6-17 09:14:51

按照你的代码,不存在的时候就是没有msg

aben_wang 发表于 2015-6-17 09:23:26

回复 2# haijie1223
啊?我是想要在不存在的时候跳MSGbox,请教下问题在哪边呢?谢谢

判断写反了嘛?

wInkly_cc 发表于 2015-6-17 10:20:40

Elseif Sleep(5000)
我试了下会被判断为turn,条件写错了

aben_wang 发表于 2015-6-17 10:49:33

Elseif Sleep(5000)
我试了下会被判断为turn,条件写错了
wInkly_cc 发表于 2015-6-17 10:20 http://www.autoitx.com/images/common/back.gif

谢谢,条件换了下,还是不行。。

wInkly_cc 发表于 2015-6-17 11:27:02

回复 5# aben_wang


    改过后的判断语句贴出来,日志文本贴出来

Alam 发表于 2015-6-17 12:16:31

回复 1# aben_wang

关键还是在于要实时读取LOG.Local $Str = ("echo Update Complete!") ;再做错误验证的时候,我把这里改成log里面没有的字符串,程式没有跳出MsgBox
Local $TITLE = "MfgTool_MultiPanel (Library: 2.4.1)"



Run("MfgTool2.exe")
WinWait("")
WinActivate("")
WinMove("", "", 0, 0)
Sleep(300)
MouseClick("left", 313, 153, 1)
Sleep(90 * 1000)



If StringInStr(_get_data(), $Str) Then
        MouseClick("left", 313, 153, 1)
        Sleep(700)
        MouseClick("left", 412, 153, 1)
Else
        Sleep(10 * 1000)
        If StringInStr(_get_data(), $Str) Then
                MouseClick("left", 313, 153, 1)
                Sleep(700)
                MouseClick("left", 412, 153, 1)
        Else
                MsgBox(0, "", "Fail")

        EndIf
EndIf

WinClose($TITLE)

Func _get_data()
        Local $File = FileOpen("MfgTool.txt")
        Local $String = FileRead($File)
        FileClose($File)
        Return $String
EndFunc   ;==>_get_data

aben_wang 发表于 2015-6-17 13:54:10

回复 7# Alam

先谢谢你了

试了下,不行。在第二个条件判断的时候,反了,改完以后就可以了正常运行了

不过这样的话 $str改成XXX,又无法卡下来,直接跳结束了

h20040606 发表于 2015-6-18 06:26:24

这是由操作系统的决定的,一个文件前一个进程没有关闭的时候,第二个是没有发读取的

ap112 发表于 2015-6-18 09:07:06

回复 1# aben_wang


    楼主请尝试在新生成日志文件时,生成完成将文件关闭,读取前重新打开。


我之前碰到类似问题,就是这么解决的!

netegg 发表于 2015-6-19 09:17:03

这什么乱七八糟的

ila 发表于 2015-6-19 21:44:18

本帖最后由 ila 于 2015-6-19 21:46 编辑

打开文件,读取文件。
为什么没一个@error判断?

窗口等待也没有失败的处理。

nqawen 发表于 2015-6-21 10:01:21

学习了,不错哦

zhaoyun 发表于 2015-6-24 08:54:16

謝謝分享,看一下。

zhaoyun 发表于 2015-6-24 08:54:24

謝謝分享,看一下。
页: [1] 2
查看完整版本: 【请教】关于if then条件判断