Datei nicht überschreiben, wenn vorhanden

  • Hi @all

    Möchte für eine Backupfunktion einen Namen vergeben. Dieser soll wie folgt ausschauen.

    $backup = "MyProgBU_" & @MDAY & "-" & @MON & "-" & @YEAR

    Wenn die Backupfunktion mehrfach am gleichen Tag ausgeführt wird, soll der alte BU nicht überschrieben werden, sondern um _(1) erweitert werden, sprich MyProgBU_09-09-2017_(1) , MyProgBU_09-09-2017_(2) usw.
    Hat evtl. jemand eine Idee dazu? Danke im Voraus.

  • Hallo dieselwiesel !

    Warum setzt Du nicht Stunde, Minute und ggf. Sekunde in den Dateinamen ein, statt _(1), _(2) usw. , also z.B. :

    ; -------------------------------------------------------------------------------------------------------------------------------

    ; Funktion : _GenerateBackupFileName

    ; Aufbau : [Backupname]_[YYYY-MM-TT_HHMM].[Ext] ==> Beispiel : "BACKUP_2017-09-10_2215.zip"

    ; -------------------------------------------------------------------------------------------------------------------------------

    Func _GenerateBackupFileName()

    Local $sTimestamp = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & @MIN

    Local $sReturnValue = "BACKUP-" & $sTimestamp & ".zip"

    Return $sReturnValue

    EndFunc ;==>_GenerateBackupFileName

    Oder kurz :

    $sBackupFileName = "BACKUP-" & @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & @MIN

    Ich würde das Jahr an die erste Stelle setzen, dann werden die Dateien chronologisch besser sortiert.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (9. September 2017 um 23:35) aus folgendem Grund: kleine Ergänzung

  • Danke für die Antworten!

    autoiter

    Funktioniert soweit ganz gut, aber sobald eine Dateiendung hinzu kommt lüppts nimmer so recht.

    Musashi

    Die Überlegung mit der Zeit war auch schon da, aber dann wird der Dateiname ja so ewig lang. Die Sache mit dem Jahr nach vorn zu setzen ist gut!

    Habe auch ein bißchen probiert und bin bei _FileListToArray gelandet.

    Das funktioniert soweit ganz gut.

  • Hallo dieselwiesel !

    Musashi

    Die Überlegung mit der Zeit war auch schon da, aber dann wird der Dateiname ja so ewig lang

    Na ja, sooo ewig lang wird es auch nicht ^^. Statt *_1 ergibt es bei *_HHMM drei Zeichen mehr (+Sekunden, falls überhaupt nötig, 5 Zeichen).

    Als Vorteil erhälst Du aber einen sichtbaren und leicht auswertbaren Zeitstempel bereits im Dateinamen.

    Letztlich aber alles Geschmackssache.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo dieselwiesel,

    Mach es am besten wie Musashi, es vorschlägt.

    Ehrlich gesagt verstehe ich aber nicht wo das Problem mit der Dateiendung besteht. Du hättest sie vllt. direkt erwähnen sollen ;)

    Code
    $backup = "MyProgBU_" & @MDAY & "-" & @MON & "-" & @YEAR & ".zip"
    
    Local $i = 0
    While FileExists($backup)
        $i += 1
        $backup = $backup & "_" & $i & ".zip"
    WEnd
    ConsoleWrite($backup & @CRLF)

    Grüße autoiter