• [Blockierte Grafik: http://www.fotos-hochladen.net/thumbnail/erase64n81dgmrx_thumb.jpg] Hey,

    das ist zwar nicht mein erstes Programm, bin aber wohl noch ziemlich am Anfang. ;)

    Funktionsweise:

    Spoiler anzeigen

    Man trägt einen Ordner ein aus dem Dateien mit einer definierten Endung nach einem gewissen Zeitraum in einen anderen Ordner verschoben werden. Aus diesem anderen Ordner werden die Dateien wiederum nach einem zuvor eingetragenen Zeitraum gelöscht.

    Dateipfad eintragen:
    Ordner aus dem die Dateien verschoben werden sollen.

    Neues Verzeichnis:
    Ordner in das die Dateien verschoben und nach einem bestimmten Zeitraum gelöscht werden sollen.

    Endung:
    Die Dateiendung der Dateien nach denen gesucht werden soll.

    Clear:
    Zeitraum nachdem die Dateien gelöscht werden sollen.

    Intervall(Sek.):
    In welchem Intervall das Programm ausgeführt werden soll.

    Check(in Std.):
    Wie alt die Datei sein darf bevor sie verschoben wird.

    Code:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.6.1
    Author: I3asti

    #ce ----------------------------------------------------------------------------

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

    #include "GUIConstants.au3"
    #include "GuiListView.au3"
    #include "file.au3"
    #include "date.au3"
    #include "EditConstants.au3"

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

    Opt("GUIOnEventMode", 1)

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

    Dim $Datei, $Intervall, $File, $Time, $Log, $Stunde, $Verschiebe, $Endung, $Clear
    Dim $Ordner[5000], $Ordnerneu[5000], $Endungen[5000], $Loeschen[5000]
    $File = @ScriptDir & "\Dateien.txt"
    $Log = @ScriptDir & "\Log.txt"
    $LogD = @ScriptDir & "\LogDelete.txt"

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

    #region GUI
    $Erase = GUICreate("Erase", 622, 443, 192, 125)
    $Listview = GUICtrlCreateListView("Dateipfad|Neues Verzeichnis|Dateiendung|Clear in Tagen", 8, 8, 609, 279)
    GUICtrlSendMsg(-1, 0x101E, 0, 202)
    GUICtrlSendMsg(-1, 0x101E, 1, 202)
    GUICtrlSendMsg(-1, 0x101E, 2, 100)
    GUICtrlSendMsg(-1, 0x101E, 3, 100)
    $Dateipfad_Input = GUICtrlCreateInput("", 8, 336, 203, 21)
    $Dateipfad_Label = GUICtrlCreateLabel("Dateipfad eingeben:", 8, 312, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Verschiebe_Input = GUICtrlCreateInput("", 222, 336, 203, 21)
    $Verschiebe_Label = GUICtrlCreateLabel("Neues Verzeichnis:", 222, 312, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Endung_Input = GUICtrlCreateInput("", 437, 336, 80, 21)
    $Endung_Label = GUICtrlCreateLabel("Endung:", 437, 312, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Clear_Input = GUICtrlCreateInput("", 534, 336, 80, 21)
    $Clear_Label = GUICtrlCreateLabel("Clear:", 534, 312, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Intervall_Input = GUICtrlCreateInput("", 8, 384, 271, 21)
    $Intervall_Label = GUICtrlCreateLabel("Intervall (Sek.):", 8, 360, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Check_Input = GUICtrlCreateInput("", 284, 384, 241, 21)
    $Check_Label = GUICtrlCreateLabel("Check (in Std.):", 284, 360, 148, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Eintragen_Button = GUICtrlCreateButton("Eintragen", 534, 371, 83, 33, 0)
    $Start_Button = GUICtrlCreateButton("Start", 534, 408, 83, 33, 0)
    $Stop_Button = GUICtrlCreateButton("Stop", 448, 408, 83, 33, 0)
    $Delete_Button = GUICtrlCreateButton("Löschen", 362, 408, 83, 33, 0)
    $Exit_Button = GUICtrlCreateButton("Exit", 8, 408, 83, 33, 0)
    $Label_Status = GUICtrlCreateLabel("Programm gestoppt", 100, 420, 100)
    $Label_Fehler = GUICtrlCreateLabel("", 200, 420, 150)
    GUISetState(@SW_SHOW)
    GUICtrlSetOnEvent($Exit_Button, "_Ende")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    GUICtrlSetOnEvent($Start_Button, "_Start")
    GUICtrlSetOnEvent($Stop_Button, "_Stop")
    GUICtrlSetOnEvent($Eintragen_Button, "_Eintragen")
    GUICtrlSetOnEvent($Delete_Button, "_Delete")
    #endregion GUI

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

    _Load()

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

    While 1

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

    Sleep(100)

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

    WEnd

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

    Func _Start()

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

    $Intervall = GUICtrlRead($Intervall_Input) ;Intervall in Variable schreiben
    $Stunde = GUICtrlRead($Check_Input) ;Checkzeit in Variable schreiben
    $Intervall = $Intervall * 1000 ;Intervall Standard in Sekunden

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

    If $Intervall <> "" Then

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

    If $Stunde <> "" Then

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

    $Stunde = _TimeToTicks($Stunde, 00, 00)
    GUICtrlSetData($Label_Status, "Programm gestartet") ;Programm gestartet als Label setzen
    AdlibRegister("_Vergleich", $Intervall) ;startet Vergleich

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

    Else

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

    MsgBox(16, "Fehler", "Bitte Checkzeit eingeben")

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

    EndIf

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

    Else

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

    MsgBox(16, "Fehler", "Bitte Intervall eintragen") ;Fehlermeldung

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

    EndIf

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

    EndFunc ;==>_Start

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

    Func _Stop()

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

    AdlibUnRegister("_Vergleich") ;beendet Vergleich
    GUICtrlSetData($Label_Status, "Programm gestopt") ;Programm gestopt als Label setzen

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

    EndFunc ;==>_Stop

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

    Func _Vergleich()

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

    If $Ordner[0] <> 0 Then ;überprüft ob Ordner vorhanden sind

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

    For $k = 1 To $Ordner[0] ;solange Dateien im Array sind

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

    If FileExists($Ordnerneu[$k]) Then ;Test ob der Ordner existiert

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

    $AlteDateien = _FileListToArray($Ordnerneu[$k], "*" & $Endungen[$k], 1) ;Liste mit files in Array schreiben

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

    If IsArray($AlteDateien) Then ;überprüft ob $Dateien ein Array ist

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

    For $l = 1 To $AlteDateien[0] ;solange Dateien im Array sind

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

    $Zusammengesetzt = $Ordnerneu[$k] & $AlteDateien[$l]

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

    If FileExists($Zusammengesetzt) Then ;wenn Datei existiert

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

    $Time = FileGetTime($Zusammengesetzt)
    $DateiTag = $Time[0] & "/" & $Time[1] & "/" & $Time[2] & " 00:00:00" ;Datei Tag schreiben

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

    $SystemTag = @YEAR & "/" & @MON & "/" & @MDAY & " 00:00:00" ;Datum heute

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

    $Differenz = _DateDiff("D", $DateiTag, $SystemTag) ;Differenz zwischen tag

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

    If $Differenz >= $Loeschen[$k] Then

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

    FileDelete($Zusammengesetzt) ;Datei löschen
    FileWriteLine($LogD, $Zusammengesetzt & @CRLF) ;Log schreiben

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

    EndIf
    EndIf

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

    Next

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

    Else

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

    GUICtrlSetData($Label_Fehler, "Dateien nicht gefunden") ;Fehlerausgabe wenn keine Dateien gefunden werden

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

    EndIf

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

    Else

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

    GUICtrlSetData($Label_Fehler, "Ordner nicht gefunden") ;Fehlerausgabe wenn kein Ordner gefunden wurde

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

    EndIf

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

    If FileExists($Ordner[$k]) Then ;Test ob der Ordner existiert

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

    $Dateien = _FileListToArray($Ordner[$k], "*" & $Endungen[$k], 1) ;Liste mit files in Array schreiben

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

    If IsArray($Dateien) Then ;überprüft ob $Dateien ein Array ist

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

    For $l = 1 To $Dateien[0] ;solange Dateien im Array sind

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

    $Zusammengesetzt = $Ordner[$k] & $Dateien[$l]

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

    If FileExists($Zusammengesetzt) Then ;wenn Datei existiert

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

    $Time = FileGetTime($Zusammengesetzt)
    $DateiTag = $Time[0] & "/" & $Time[1] & "/" & $Time[2] & " 00:00:00" ;Datei Tag schreiben
    $DateiZeit = _TimeToTicks($Time[3], $Time[4], $Time[5]) ;Datei Zeit in Ticks wandeln

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

    $SystemTag = @YEAR & "/" & @MON & "/" & @MDAY & " 00:00:00" ;Datum heute
    $SystemZeit = _TimeToTicks(@HOUR, @MIN, @SEC);Zeit jetzt

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

    $Differenz = _DateDiff("D", $DateiTag, $SystemTag) ;Differenz zwischen tag

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

    If $Differenz >= 1 Then

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

    $Zeit = $Differenz * 24
    $SystemZeit = $SystemZeit + _TimeToTicks($Zeit, 00, 00) ;Systemzeit plus 1 Tag

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

    EndIf

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

    $Differenz = $SystemZeit - $DateiZeit ;Differenz errechnen

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

    If $Differenz > $Stunde Then ;wenn Differenz größer 1 Stunde
    FileSetTime($Zusammengesetzt, @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC)
    FileMove($Zusammengesetzt, $Ordnerneu[$k] & $Dateien[$l], 9) ;Verschiebt die Datei
    FileWriteLine($Log, $Zusammengesetzt & @CRLF) ;Log schreiben
    EndIf

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

    EndIf

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

    Next

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

    Else

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

    GUICtrlSetData($Label_Fehler, "Dateien nicht gefunden") ;Fehlerausgabe wenn keine Dateien gefunden werden

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

    EndIf

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

    Else

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

    GUICtrlSetData($Label_Fehler, "Ordner nicht gefunden") ;Fehlerausgabe wenn kein Ordner gefunden wurde

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

    EndIf

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

    Next

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

    Else

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

    GUICtrlSetData($Label_Fehler, "Keine Ordner gefunden") ;Fehlerausgabe wenn kein Ordner gefunden wurde

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

    EndIf

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

    EndFunc ;==>_Vergleich

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

    Func _Eintragen()

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

    $Datei = GUICtrlRead($Dateipfad_Input) ;Dateipfad in Variable schreiben
    $Verschiebe = GUICtrlRead($Verschiebe_Input) ;Neuen Dateipfad in Variable schreiben
    $Endung = GUICtrlRead($Endung_Input) ;Dateiendung in Variable schreiben
    $Clear = GUICtrlRead($Clear_Input) ;Zeitraum zum löschen in Variable schreiben

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

    If $Datei <> "" Then ;wenn Dateipfad nicht leer ist

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

    If $Verschiebe <> "" Then ;wenn der neue Dateipfad nicht leer ist

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

    If $Endung <> "" Then ;wenn keine Dateiendung angegeben ist

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

    If StringRegExp($Endung, "\.") Then ;wenn ein Punkt in der Dateiendung enthalten ist

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

    If $Clear <> "" Then ;wenn ein Zeitraum eingetragen wurde

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

    FileWriteLine($File, $Datei & "|" & $Verschiebe & "|" & $Endung & "|" & $Clear & @CRLF) ;Dateipfad in Datei schreiben
    _Load() ;Load ausführen

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

    Else

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

    MsgBox(16, "Fehler", "Bitte einen Zeitraum zum löschen der alten Daten angeben") ;wenn kein Zeitraum eingetragen wurde

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

    EndIf

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

    Else

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

    MsgBox(16, "Fehler", "Die Dateiendung muss einen Punkt enthalten") ;wenn kein Punkt in der Dateiendung enthalten ist

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

    EndIf

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

    Else

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

    MsgBox(16, "Fehler", "Bitte eine Dateiendung angeben") ;wenn keine Dateiendung angegeben ist

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

    EndIf

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

    Else

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

    MsgBox(16, "Fehler", "Bitte neues Verzeichnis angeben") ;wenn kein neues Verzeichnis angegeben ist

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

    EndIf

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

    Else

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

    MsgBox(16, "Fehler", "Bitte Dateipfad eintragen") ;wenn kein Dateipfad eingetragen ist

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

    EndIf

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

    EndFunc ;==>_Eintragen

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

    Func _Load()

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

    _GUICtrlListView_DeleteAllItems($Listview) ;leert das Listview

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

    ReDim $Ordner[1]
    ReDim $Ordner[5000]

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

    _FileReadToArray($File, $Ordner) ;liest die Dateipfade ins Array

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

    For $l = 1 To $Ordner[0] Step 1
    GUICtrlCreateListViewItem($Ordner[$l], $Listview) ;in Listview eintragen
    Next

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

    ReDim $Ordner[1]
    ReDim $Ordner[5000]
    ReDim $Ordnerneu[1]
    ReDim $Ordnerneu[5000]
    ReDim $Endungen[1]
    ReDim $Endungen[5000]
    ReDim $Loeschen[1]
    ReDim $Loeschen[5000]

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

    $k = -1

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

    For $l = 1 To $Ordner[0] Step 1

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

    $k = $k + 1

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

    $Ordner[$l] = _GUICtrlListView_GetItemText($Listview, $k, 0) ;Ordner eintragen
    $Ordnerneu[$l] = _GUICtrlListView_GetItemText($Listview, $k, 1) ;Neues Verzeichnis eintragen
    $Endungen[$l] = _GUICtrlListView_GetItemText($Listview, $k, 2) ;Dateiendung eintragen
    $Loeschen[$l] = _GUICtrlListView_GetItemText($Listview, $k, 3) ;Zeitraum eintragen

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

    Next

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

    EndFunc ;==>_Load

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

    Func _Delete()

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

    $Del = _GUICtrlListView_GetSelectedIndices($Listview) ;Ausgewählter Eintrag in Del schreiben
    If $Del = "" Then
    MsgBox(16, "!!!Fehler!!!", "Wählen sie einen Eintrag aus") ;wenn kein Eintrag ausgewählt war
    Else
    $Del = $Del + 1 ;Del um eins erhöhen
    _ArrayDelete($Ordner, $Del) ;Eintrag aus Array löschen
    $k = 0 ;Zähler setzen
    $d = 0 ;Zähler setzen

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

    FileDelete($File) ;Liste löschen

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

    For $l = 1 To $Ordner[0] Step 1
    If $d <> 0 Then ;beim ersten durchlauf nicht durchführen
    $k = $k + 1
    FileWriteLine($File, $Ordner[$k] & "|" & $Ordnerneu[$k] & "|" & $Endungen[$k] & "|" & $Loeschen[$l] & @CRLF) ;Eitnräge schreiben
    EndIf
    $d = 1
    Next
    _Load() ;Daten laden
    EndIf

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

    EndFunc ;==>_Delete

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

    Func _Ende()
    Exit
    EndFunc ;==>_Ende

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

    Falls noch jemand Verbesserungsvorschläge hat immer gerne. ;)
    Programmname lass ich mir auch gerne einen neuen (passenderen) vorschlagen. :D

    Mfg I3asti

    Einmal editiert, zuletzt von I3asti (14. März 2012 um 10:03)