先来说一下,你想要的效果其实不是脚本每天8点自动运行,而是脚本一直是运行的,只是每天8点开始做有效的运行工作,其他时间点一直处于“待命状态”。
如果你认同我上面所说的内容,那么就继续往下看吧。
解决这个问题有两种方法:
第一种:先计算你脚本有效的运行时间,比如1个小时,那么剩下的“待命状态”的时间就是23个小时,换句话说就是你的脚本执行完一次以后,要等待23个小时,在按键精灵里等待时间的命令就是delay,不过要换算,因为它的单位毫秒,你要把23小时等于多少毫秒算出来,建议用计算器算一下。
这种方法有一个缺点,就是你必须要在8点执行首次操作,它是24小时完成一个运行周期,并不会真的在8点执行,而是每天在某一个固定的时间执行,这个时间点取决于你首次运行的开始时间。
第二种方法:
原理是获取当前系统时间,然后判断获取的时间是不是8点,如果是8点就开始执行有效脚本,如果不是8点,那么重新获取系统时间,再次判断,这个过程重复进行,直到8点为止。
缺点是脚本比较累一直在做判断,优点是能够精准判断。
代码如下:
Do
Dim t
t = Now()
TracePrint t
Dim r
r = UTF8.Right(t, 13)
TracePrint r
Dim l
l = UTF8.Left(r, 5)
TracePrint l
If l = "08:00" Then
TracePrint "调试成功,用你的脚本替换本行"
Exit Do
Elseif l = "08:01" Then
TracePrint "调试成功,用你的脚本替换本行"
Exit Do
Else
TracePrint "调试失败"
End If
Delay 60000
Loop
稍微解释一下,
为了看着方便,变量我没有合并,
由于7个“星期”的英文所写长度不一样,所以导致日期的长度也是不一样的,那么在获取8点的方法上,我选择了从后往前找的办法。
在判断的时候为了防止脚本由于卡顿错过了8点而无法有效运行,所以追加了一个判断,就是在8点01分也是可以执行脚本。当然这是在8点没有开始脚本,如果开始了,就不会在继续判断8点01分了。
如果有啥问题可以追问,或者关注我的公众号:3分钟学堂。
这个代码我在自己电脑上做了测试,附上一个我运行的截图: