找回密码
 加入
搜索
查看: 7927|回复: 15

[AU3基础] 【请教】关于if then条件判断

 火.. [复制链接]
发表于 2015-6-17 08:54:14 | 显示全部楼层 |阅读模式
本帖最后由 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("[CLASS:#32770]")
WinActivate("[CLASS:#32770]")
WinMove("[CLASS:#32770]","",0,0)
Sleep(300)
MouseClick("left",313,153,1)
Sleep(90000)



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

WinClose($TITLE)
发表于 2015-6-17 09:14:51 | 显示全部楼层
按照你的代码,不存在的时候就是没有msg
 楼主| 发表于 2015-6-17 09:23:26 | 显示全部楼层
回复 2# haijie1223
啊?我是想要在不存在的时候跳MSGbox,请教下问题在哪边呢?谢谢

判断写反了嘛?
发表于 2015-6-17 10:20:40 | 显示全部楼层
Elseif Sleep(5000)
我试了下会被判断为turn,条件写错了
 楼主| 发表于 2015-6-17 10:49:33 | 显示全部楼层
Elseif Sleep(5000)
我试了下会被判断为turn,条件写错了
wInkly_cc 发表于 2015-6-17 10:20


谢谢,条件换了下,还是不行。。
发表于 2015-6-17 11:27:02 | 显示全部楼层
回复 5# aben_wang


    改过后的判断语句贴出来,日志文本贴出来
发表于 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("[CLASS:#32770]")
WinActivate("[CLASS:#32770]")
WinMove("[CLASS:#32770]", "", 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
 楼主| 发表于 2015-6-17 13:54:10 | 显示全部楼层
回复 7# Alam

先谢谢你了

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

不过这样的话 $str改成XXX,又无法卡下来,直接跳结束了
发表于 2015-6-18 06:26:24 | 显示全部楼层
这是由操作系统的决定的,一个文件前一个进程没有关闭的时候,第二个是没有发读取的
发表于 2015-6-18 09:07:06 | 显示全部楼层
回复 1# aben_wang


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


我之前碰到类似问题,就是这么解决的!
发表于 2015-6-19 09:17:03 | 显示全部楼层
这什么乱七八糟的
发表于 2015-6-19 21:44:18 | 显示全部楼层
本帖最后由 ila 于 2015-6-19 21:46 编辑

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

窗口等待也没有失败的处理。
发表于 2015-6-21 10:01:21 | 显示全部楼层
学习了,不错哦
发表于 2015-6-24 08:54:16 | 显示全部楼层
謝謝分享,看一下。
发表于 2015-6-24 08:54:24 | 显示全部楼层
謝謝分享,看一下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 17:53 , Processed in 0.083984 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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