Hallo Brauche mal wieder Unterstützung......
Habe wie folgt mit Unterstützung von Bugfix und allen anderen.
[ gelöst ] Chekbox in ini eintragen und Uhrzeit....
diese ini erzeugt:
[Wochentag]
tage=80
[Startzeit]
Uhr=16:00
[Quelle-Ziele]
F:\=C:\
F:\=x:\
F:\=y:\
Jetzt wollte ich ein Script zum laufen bringen der diese ini ausliest und dann eine exe startet wenn alles in frage kommen,
Also Datum und Stunde und Minuten.
Und Prüfen Ob Quelle und Ziel verfügbar sind
Script sollte alle Kriterien alle 30 Sec. Prüfen.
So sieht mein Script aus komme irgendwie nicht weiter???
Spoiler anzeigen
#include <Array.au3>
#include <Date.au3> ; wird für die Funktion benötigt
Local $arCheckBox[7]
$arCheckBox[6] = "Mo."
$arCheckBox[5] = "Di."
$arCheckBox[4] = "Mi."
$arCheckBox[3] = "Do."
$arCheckBox[2] = "Fr."
$arCheckBox[1] = "Sa."
$arCheckBox[0] = "So."
$ini = IniRead(@ScriptDir & '\save.ini', "sicherung", "tage", 0)
For $i = 6 To 0 step - 1
If BitAND($ini, 2^$i) Then$aDate = _DayIntervalToDateArray('Do.')
$aDate = _DayIntervalToDateArray('Do.')
_ArrayDisplay($aDate, $arCheckBox[$i])
;MsgBox(0, '', )
; GUICtrlSetState($arCheckBox[$i], $GUI_CHECKED)
EndIf
Next
; Beispiele -Anfang-
;$aDate = _DayIntervalToDateArray('Mo-Sa')
;_ArrayDisplay($aDate, 'Intervall = Mo-Sa')
;$aDate = _DayIntervalToDateArray('MI.-fr.', False)
;_ArrayDisplay($aDate, 'Intervall = MI.-fr.')
;$aDate = _DayIntervalToDateArray('Do.')
;_ArrayDisplay($aDate, 'Intervall = Do.')
;$aDate = _DayIntervalToDateArray('Do.', False)
;_ArrayDisplay($aDate, 'Intervall = letzter Do.')
;$aDate = _DayIntervalToDateArray('So.', False, 2009, 12, 24) ; gesucht: Sonntag vor Heiligabend
;_ArrayDisplay($aDate, 'Intervall = So. vor Heiligabend')
; Beispiele -Ende-
;===============================================================================
; Function Name: _DayIntervalToDateArray($sInterval[, $bTime = True][, $iYear = @YEAR][, $iMonth = @MON][, $iDay = @MDAY])
; Description:: gibt ein Array mit Daten zurück, die dem übergebenen Wochentagsintervall entsprechen
; Parameter(s): $sIntervall = Wochentag oder ein Intervall (von...bis)
; $bTime = False (Vergangenheit) oder True (Zukunft)
; $iYear, $iMonth, $iDay = Falls man ein anderes Bezugsdatum angeben will
; Requirement(s): #include <Array.au3>
; #include <Date.au3>
; Return Value(s): nullbasiertes Array
; im Fehlerfall: Rückgabe = "0" und @error = 1
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _DayIntervalToDateArray($sInterval, $bTime = True, $iYear = @YEAR, $iMonth = @MON, $iDay = @MDAY)
Local $aInterval = StringSplit($sInterval, '-')
If $aInterval[0] > 2 Then Return SetError(1, 0, 0)
Local $aWeekDay[7][2] = [['Mo', 0],['Di', 1],['Mi', 2],['Do', 3],['Fr', 4],['Sa', 5],['So', 6]]
Local $aDay[2] = [-1, -1], $aDate[1], $iDateSub, $iTimeFormat
For $i = 1 To $aInterval[0]
For $j = 0 To UBound($aWeekDay) - 1
If StringInStr($aInterval[$i], $aWeekDay[$j][0]) Then
$aDay[$i - 1] = $aWeekDay[$j][1]
ExitLoop
EndIf
Next
Next
If $aDay[0] = -1 Then Return SetError(1, 0, 0)
If $aDay[1] > -1 Then ; Wenn ein "von-bis-Intervall" übergeben wurde, dann...
ReDim $aDate[$aDay[1] - $aDay[0] + 1]
For $i = 0 To $aDay[1] - $aDay[0] ; Alle Wochentage aus dem Intervall
$iDateSub = ($aWeekDay[$aDay[0] + $i][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
If $bTime Then
If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
Else
If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
EndIf
$aDate[$i] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
Next
Else ; ansonsten wurde nur ein einzelner Wochentag übergeben
$iDateSub = ($aWeekDay[$aDay[0]][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
If $bTime Then
If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
Else
If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
EndIf
$aDate[0] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
EndIf
_ArraySort($aDate) ; Ausgabe-Array sortieren
Return $aDate
EndFunc ;