dj82 发表于 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

用什么方式让程序按定时进行循环运行?也不占太多的系统资源

410521a 发表于 2010-7-4 17:47:29

最简单的 sleep

xsjtxy 发表于 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
        if StringLeft($var[$i], 5) = StringLeft(_NowTime(), 5) then
        $t = $var[$i]
      MsgBox(0, "", $var[$i] & @CRLF & $var[$i])
        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

dj82 发表于 2010-7-4 22:35:33

感谢楼上的朋友,不过您好像是按小时计算,程式也比较复杂

我是想按分钟计算,简单点好!

afan 发表于 2010-7-5 00:00:59

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

总之问题描述得越清晰,解答也就更快更贴切。

dj82 发表于 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

自己想通了,就是这样子!加一个开机启动.很简单..不过,有没有方法,把语句精简一下?

3mile 发表于 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

页: [1]
查看完整版本: 如何通过配置文件来定时运行?