1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. PopupBlocker

Beiträge von PopupBlocker

  • Ältere Ordner löschen

    • PopupBlocker
    • 25. Februar 2015 um 13:13

    @Kanashius: Danke für die Info. Dann brauch ich danach nicht mehr suchen. || Schade würde gerne ohne Beachtung auf Inhalt löschen. :)

    @Micha_he: Alles klar! Sieht gut aus! Nachdem ich durch die testerei die meisten Backups schon gelöscht habe muss ich das in ein paar Tagen erneut Probieren - mit dem aktuellen Test sah das aber gut aus.

    Besten Dank

  • Ältere Ordner löschen

    • PopupBlocker
    • 25. Februar 2015 um 12:32

    Die einzelnen Ordner Backup_xx.xx.xx

    Problem bei dem rekrusiven ablauf und der leer Prüfung das er mir in den Backups Ordner (Unterordner) löscht die leer sind und zB vom Backup_24.02.15 sind.

    Vllt. versteh ich auch was falsch oder das Script kann ich nicht verwenden. Alle Ordner die älter als 5 Tage sind sollen komplett gelöscht werden - ohne Beachtung auf unterordner. Geht sowas?

    Danke.

  • Ältere Ordner löschen

    • PopupBlocker
    • 25. Februar 2015 um 12:05

    Hallo Micha_he,

    vielen Dank für Deine Antwort.

    Die Ordner haben das entsprechende Änderungsdatum zB der Ordner Backup_19.02.15 hat das Änderungsdatum "19.02.15 23:30" das sollte kein Problem sein.

    Ich möchte das der gesamte Ordner ohne Beachtung der Unterordner gelöscht wird.

    Die Funktion löscht nur wenn ich sie auf Unterordner prüfen lasse - was ich ja nicht möchte. Entweder soll der gesamte Ordner gelöscht werden oder eben nicht.

    Ungefähr verständlich was mein Problem gerade ist? :D

    Besten Dank

  • Ältere Ordner löschen

    • PopupBlocker
    • 25. Februar 2015 um 09:39

    Hallo zusammen,

    über die Forensuche bin ich auf die Funktion von Oscar und Micha_he gestoßen. Dateien nach einer bestimmten Anzahl an Tagen löschen (Funktion)

    Leider funktioniert das bei mir nicht wie gewünscht. Ich möchte das auf der Festplatte C:\ im Ordner Backup alle BackupOrdner gelöscht werden die älter als 5 Tage sind. Ein Scipt erstellt jeden abend eine Kopie und legt die in den Ordner wie folgt ab.

    Backup_19.02.15
    Backup_20.02.15
    Backup_21.02.15
    usw..

    Jetzt soll heute der Gesamte Ordner vom 19.02 gelöscht werden alle anderen sollen unberührt bleiben. Was mach ich falsch oder ist diese Funktion nicht geeigenet dafür?

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    #include <File.au3>
    #include <Array.au3>

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

    $Server=("C:\Temp\Backup\")
    $Tage=5

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

    _FileDeleteAfterXDays($Server, $Tage, True)
    ;===============================================================================
    ; Function Name: _FileDeleteAfterXDays($sPath, $iDays[, $bForceDel][, $bRek][, $bDirDel][, $bLog])
    ; Description:: löscht Dateien in einem ausgewähltem Verzeichnis (rekursiv)
    ; nach einer angegebenen Anzahl von Tagen
    ; Parameter(s): $sPath = Verzeichnis, aus dem die Dateien gelöscht werden sollen.
    ; $iDays = Dateien, die älter als $iDays (in Tagen) sind, löschen.
    ; $bForceDel = wenn "True" werden auch Dateien/Verzeichnisse gelöscht,
    ; die gegen löschen geschützt sind ("R"-Attribut)
    ; $bRek = wenn "True" wird das Verzeichnis rekursiv (inkl. Unter-
    ; verzeichnisse) durchsucht.
    ; $bDirDel = wenn "True" wird das Unterverzeichnis gelöscht, wenn
    ; es (aufgrund der Löschaktion) leer ist.
    ; $bLog = wenn "True" wird das Ergebnis der Löschaktion in die
    ; Console geschrieben.
    ; Requirement(s): AutoIt-Version min. v3.3.2.0
    ; #include <Date.au3>
    ; Return Value(s): bei Erfolg Rückgabe = 1
    ; bei Fehler Rückgabe = 0
    ; und @error:
    ; 1 = $iDays ist keine oder eine negative Zahl
    ; 2 = Das übergebene Verzeichnis existiert nicht oder ist leer.
    ; Author(s): Oscar (http://www.autoit.de)
    ; Micha_he (http://www.autoit.de)
    ;===============================================================================
    Func _FileDeleteAfterXDays($sPath, $iDays, $bForceDel = True, $bRek = False, $bDirDel = True, $bLog = False)

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

    Local $hSearchm, $hEmpty, $sFile, $sDate, $iRet
    If (Not IsNumber($iDays)) Or ($iDays < 0) Then Return SetError(1, 0, 0)
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Then Return SetError(2, 0, 0)
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If @extended Then
    If $bRek Then
    _FileDeleteAfterXDays($sPath & $sFile, $iDays, $bForceDel, $bRek, $bDirDel, $bLog)
    If $bDirDel Then
    $hEmpty = FileFindFirstFile($sPath & $sFile & '\*.*')
    If @error Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = DirRemove($sPath & $sFile)
    If
    $bLog Then ConsoleWrite('Delete Folder "' & $sPath & $sFile
    & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    FileClose($hEmpty)
    EndIf
    EndIf
    Else
    $sDate = StringRegExpReplace(FileGetTime($sPath & $sFile, 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    If _DateDiff('D', $sDate, _NowCalc()) > $iDays Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = FileDelete($sPath & $sFile)
    If
    $bLog Then ConsoleWrite('Delete File "' & $sPath & $sFile &
    '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    EndIf
    WEnd
    FileClose($hSearch)
    Return 1
    EndFunc

    [/autoit]

    Besten Dank und Grüße

  • CountDown Abfrage

    • PopupBlocker
    • 23. Dezember 2013 um 16:19
    Zitat von Raupi

    Selbst wenn du noch 100 mal den Code postest, hat er trotdem einen Syntaxfehler und ist so niemals ausführbar.
    Zeile 80

    Habe den Code nur 1 mal gepostet.. und erhalte jetzt auch den von dir beschrieben fehler.. wieso das vorher lief!? 8|

    Eine Änderung ergibt nun keinen fehler..

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $sec, $min, $hr, $day
    $gui = GUICreate('CountDown', 200,50)
    $bt = GUICtrlCreateButton('Start', 40, 15, 50, 20)
    $iDown = GUICtrlCreateInput('', 100, 15, 80, 20, $ES_READONLY)
    GUISetState()

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

    $zufallszahl = Random(10,20,1)

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

    MsgBox('', "Zufallszahl", "Die Zahl ist " & $zufallszahl)

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

    $min = 0
    $sec = $zufallszahl

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

    While True
    $msg = GUIGetMsg()
    If $msg = $bt Then
    _CountDown($sec, $min, $hr, $day, True, $iDown)

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

    if $iDown = true Then
    MsgBox('', "TITEL", "TEXT")
    EndIf
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

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

    WEnd

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

    Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
    $Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    Local $message
    Do
    Sleep(100)
    $sec = _DateDiff('s', _NowCalc(), $end)
    If Not $VISIBLEDOWN Then
    $secShow = $Sekunden - $sec
    Else
    $secShow = $sec
    EndIf
    Select
    Case $secShow < 60
    If $ALTERNATECTRL = 'TT' Then
    ToolTip(StringFormat('%02u', $secShow) & ' s')
    Else
    GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
    EndIf
    Case $secShow < 60*60
    $message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
    StringFormat('%02u', Mod($secShow,60)) & ' min'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case $secShow < 60*60*24
    $message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case Else
    $message = Floor($secShow/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf

    if $message = 0 Then
    $message = true
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    EndSelect
    Until $sec = 0
    EndFunc ;==>_CountDown

    [/autoit]
  • CountDown Abfrage

    • PopupBlocker
    • 23. Dezember 2013 um 13:30

    *push*

    bräuchte immer noch ein guten tipp :)

    Frohes Fest zusammen! :thumbup:

  • CountDown Abfrage

    • PopupBlocker
    • 19. Dezember 2013 um 15:20

    Im Anhang die Datei.

    Dateien

    countdown.au3 3,09 kB – 350 Downloads
  • CountDown Abfrage

    • PopupBlocker
    • 19. Dezember 2013 um 11:43

    Danke für den Tipp!

    Also wenn ich meinen geposteten Code nehme und einfüge funktionierts.

    Was genau geht nicht? Habe die aktuellste Version (wie sehe ich die genaue Versionsnummer?)

  • CountDown Abfrage

    • PopupBlocker
    • 19. Dezember 2013 um 11:18

    Hallo Raupi,

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $sec, $min, $hr, $day
    $gui = GUICreate('CountDown', 200,50)
    $bt = GUICtrlCreateButton('Start', 40, 15, 50, 20)
    $iDown = GUICtrlCreateInput('', 100, 15, 80, 20, $ES_READONLY)
    GUISetState()

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

    $zufallszahl = Random(10,20,1)

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

    MsgBox('', "Zufallszahl", "Die Zahl ist " & $zufallszahl)

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

    $min = 0
    $sec = $zufallszahl

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

    While True
    $msg = GUIGetMsg()
    If $msg = $bt Then
    _CountDown($sec, $min, $hr, $day, True, $iDown)

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

    if $iDown = true Then
    MsgBox('', "TITEL", "TEXT")
    EndIf
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

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

    WEnd

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

    Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
    $Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    Local $message
    Do
    Sleep(100)
    $sec = _DateDiff('s', _NowCalc(), $end)
    If Not $VISIBLEDOWN Then
    $secShow = $Sekunden - $sec
    Else
    $secShow = $sec
    EndIf
    Select
    Case $secShow < 60
    If $ALTERNATECTRL = 'TT' Then
    ToolTip(StringFormat('%02u', $secShow) & ' s')
    Else
    GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
    EndIf
    Case $secShow < 60*60
    $message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
    StringFormat('%02u', Mod($secShow,60)) & ' min'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case $secShow < 60*60*24
    $message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case Else
    $message = Floor($secShow/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf

    if $message = 0 Then
    True
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    EndSelect
    Until $sec = 0
    EndFunc ;==>_CountDown

    [/autoit]

    Die Funktion _CountDown versteckt sich normal in der Date.au3. Habe sie eben in den jetzigen Code eingebaut.

    Viele Grüße

  • CountDown Abfrage

    • PopupBlocker
    • 19. Dezember 2013 um 09:47

    Hallo CentuCore,

    vielen Dank für Deine Antwort! Es hat funktioniert! :thumbup:

    Könntest Du mir vllt noch ein Tipp geben wo ich ansetzen muss damit der CountDown auch "Abgebrochen" werden kann. Das Fenster kann ich nur schließen wenn der Timer auf "0 s" steht.
    Idealerweise auf 2 Varianten -> das x im Fenster und wenn ich einen neuen Button einbaue der den Counter abbricht.

    Grüße

  • CountDown Abfrage

    • PopupBlocker
    • 18. Dezember 2013 um 18:11

    Hallo zusammen,

    vorweg: ich bin völliger AutoIT Anfänger und habe erst ein kleines Script zusammengebastelt.

    Ich habe den CountDown von BugFix (Link zum Thread ) genommen und etwas umfunktioniert.
    Eine Zufallszahl (später in Minuten) wird generiert und als Timer verwendet.

    Leider weiß ich nicht wie ich am besten folgendes einbaue

    - Wenn ich das "x" anklicke schließt sich der Counter nicht (nur wenn der Timer nicht läuft)
    - Wenn die Zeit abgelaufen ist möchte ich ein Script ausführen (In diesem Code soll eine MsgBox als Bsp dienen)

    [autoit]

    #include <Date.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>

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

    Local $sec, $min, $hr, $day
    $gui = GUICreate('CountDown', 200,50)
    $bt = GUICtrlCreateButton('Start', 40, 15, 50, 20)
    $iDown = GUICtrlCreateInput('', 100, 15, 80, 20, $ES_READONLY)
    GUISetState()

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

    $zufallszahl = Random(10,20,1)

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

    MsgBox('', "Zufallszahl", "Die Zahl ist " & $zufallszahl)

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

    $min = 0
    $sec = $zufallszahl

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

    While True
    $msg = GUIGetMsg()
    If $msg = $bt Then
    _CountDown($sec, $min, $hr, $day, True, $iDown)

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

    if $idown = 0 Then
    MsgBox('', "TITEL", "TEXT")
    EndIf
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

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

    WEnd

    [/autoit]

    Habe zick verschiedene Möglichkeiten versucht aber komme nicht zu dem gewünschten Ergebnis.. :wacko: Ist dieses Problem schon fortgeschritten oder noch für Anfänger zu meistern? ;)

    Besten Dank

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™