Skript funktioniert wie es lustig ist

  • Hallo,

    ich habe ein skript das zu einer bestimmten uhrzeit einen ordner leeren soll
    einmal läuft es, einmal läuft es nicht
    wenn es läuft kann es passieren dass die verschobenen dateien "verschwinden", mal sind sie da wo sie sein sollten

    hat sich da irgendwo ein fehler eingeschlichen?

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $xerox = "E:\Laufwerk_G\Xerox\"
    $alte_scans = "Scans vom Vortag"
    $hh = 23
    $mm = 59
    $ss = 59

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While True
    If @HOUR == $hh And @MIN == $mm And @SEC == $ss Then
    _inhalt_loeschen($xerox & $alte_scans)
    _inhalt_verschieben($xerox, $alte_scans)
    Else
    Sleep(1000)
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; löscht alle Dateien in einem Verzeichnis
    Func _inhalt_loeschen($pfad)
    $liste = _FileListToArray($pfad, "*")

    If IsArray($liste) Then
    For $i = 1 To $liste[0]
    FileDelete($pfad &"\"& $liste[$i])
    Next
    EndIf
    Return $liste
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; verschiebt alle Dateien im Verzeichnis in den Ordner
    Func _inhalt_verschieben($pfad, $ordner)
    $liste = _FileListToArray($pfad, "*")

    If IsArray($liste) Then
    For $i = 1 To $liste[0]
    If $liste[$i] <> $ordner Then
    FileMove($xerox & $liste[$i], $xerox & $ordner & "\" & $liste[$i], 8)
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Der Wert bei Sleep muß kleiner sein, als die kleinste gemessene Zeiteinheit;
    Sonst macht das Skript grad Pause, wenn die gewünschte Zeit eintritt ;)

    In diesem Fall könnte es jedoch passieren, daß die If-Bedingung mehrmals zutrifft, deshalb gehört dort ein Sleep rein, welches größer als die kleinste Zeit ist

    Je nachdem, wie genau du die Zeit messen willst kannst du sowas machen:

    [autoit]

    While True
    If @HOUR == $hh And @MIN == $mm And (@SEC >= $ss-1 And @SEC <= $ss+1) Then
    _inhalt_loeschen($xerox & $alte_scans)
    _inhalt_verschieben($xerox, $alte_scans)
    Sleep(3000)
    Else
    Sleep(1000)
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While True
    If @HOUR == $hh And @MIN == $mm Then
    _inhalt_loeschen($xerox & $alte_scans)
    _inhalt_verschieben($xerox, $alte_scans)
    Sleep(65000)
    Else
    Sleep(30000)
    EndIf
    WEnd

    [/autoit]
  • stimmt ich lasse einfach die sekunde weg... die braucht man sowieso nicht =D

    aber warum verschiebt das skript so unzuverlässig?