找回密码
 加入
搜索
查看: 4771|回复: 6

[AU3基础] 如何通过配置文件来定时运行?

  [复制链接]
发表于 2010-7-4 16:36:28 | 显示全部楼层 |阅读模式
本帖最后由 dj82 于 2010-7-4 16:51 编辑

config.ini
[时间]
时间=
#按分钟计算

[配置1]
路径=F:\test1

[配置2]
路径=F:\test2

AUTOIT 代码:
While 1
For $x = 1 To 10
        $ini = "配置" & $x
        $clrdir = IniRead(@ScriptDir & "\config.ini", $ini, "路径", "")
        DirRemove($clrdir, 1)
        EndIf
Next
WEnd

用什么方式让程序按定时进行  循环  运行?也不占太多的系统资源
发表于 2010-7-4 17:47:29 | 显示全部楼层
最简单的 sleep
发表于 2010-7-4 18:36:19 | 显示全部楼层
#Include <date.au3>

If FileExists("timecfg.ini") Then
$var = IniReadSection("timecfg.ini", "time")
If @error Then
    MsgBox(4096, "", "发生错误配置文件无法读写.")
exit
Else
$t = 0
While 1
    For $i = 1 To $var[0][0]
        if StringLeft($var[$i][1], 5) = StringLeft(_NowTime(), 5) then
        $t = $var[$i][1]
        MsgBox(0, "", $var[$i][0] & @CRLF & $var[$i][1])
        else
        sleep(500)
        endif
    Next
if $t <> 0 then
Do
sleep(1000)
Until StringLeft($t, 5) <> StringLeft(_NowTime(), 5)
$t = 0
endif
WEnd
EndIf
Else
IniWrite("timecfg.ini", "time", "时间1", "01:00:00")
IniWrite("timecfg.ini", "time", "时间2", "02:00:00")
IniWrite("timecfg.ini", "time", "时间3", "03:00:00")
IniWrite("timecfg.ini", "time", "时间4", "04:00:00")
ShellExecute ("timecfg.ini")
EndIf

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-7-4 22:35:33 | 显示全部楼层
感谢楼上的朋友,不过您好像是按小时计算,程式也比较复杂

我是想按分钟计算,简单点好!
发表于 2010-7-5 00:00:59 | 显示全部楼层
3#只是给出了一个定时运行的例子,仅用于LZ参考。
另外LZ的问题描述太过简单。你想达到一个什么目的并没有说清楚,比如
定时运行?
----什么时间?只有一个固定时间还是有多个时间,还是某个时间段;
----按分钟计算?1000分钟?几点几分?
时间到运行什么?
----删除所有指定的文件夹?如果仅此而还是首先想想如何写更方便操作的配置文件。

总之问题描述得越清晰,解答也就更快更贴切。
 楼主| 发表于 2010-7-5 12:02:25 | 显示全部楼层
本帖最后由 dj82 于 2010-7-5 13:17 编辑

谢谢,版主指导..

简单点说,就是每隔几分钟运行一次程序!

If Not RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "清理") Then
        RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "清理", "REG_SZ", @AutoItExe)
        While 1
                For $x = 1 To 99
                        $ini = "配置" & $x
                        $time = IniRead("ichina8.ini", $ini, "时间", "")
                        Sleep($time)
                        $clrdir = IniRead("ichina8.ini", $ini, "路径", "")
                        DirRemove($clrdir, 1)
                Next
        WEnd
EndIf
If Not RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "清理") Then
        RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "清理", "REG_SZ", @AutoItExe)
Else
        While 1
                For $x = 1 To 99
                        $ini = "配置" & $x
                        $time = IniRead("ichina8.ini", $ini, "时间", "")
                        Sleep($time)
                        $clrdir = IniRead("ichina8.ini", $ini, "路径", "")
                        DirRemove($clrdir, 1)
                Next
        WEnd
EndIf

自己想通了,就是这样子!加一个开机启动.很简单..不过,有没有方法,把语句精简一下?
发表于 2010-7-5 17:09:26 | 显示全部楼层
这个可以吗?
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>

$time=IniRead("config.ini","time","time","error")
$path1=IniRead("config.ini","setup1","path","error")
$path2=IniRead("config.ini","setup2","path","error")
$time=$time*1000*60
AdlibRegister("time",$time)

$Form1 = GUICreate("请耐心等待"&$time&"毫秒", 639, 460, -1, -1)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd


Func time()
        MsgBox(0,"警告","定时启动程序已经启动"&@CRLF&$path1&@CRLF&$path2)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 18:47 , Processed in 0.079727 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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