Ordner löschen

  • BugFix

    ich hoffe, ich erfülle die Bedingungen deines Tipps :/

    Ich habe mit Eurer Hilfe folgendes Script gebastelt:

    AutoIt
    $src  = 'E:\taegl_Backup_P1\2022-02-06'
    $srcd = 'E:\taegl_Backup_P1\2022-02-06\D$'
    $dst  = 'E:\jaehrl_Backup\2022\2022-02'
    If FileExists ($src) And StringInStr(FileGetAttrib ($src), 'DC') Then
        Run (@ComSpec & ' /k robocopy.exe "' & ($srcd) & '" "' & ($dst) & '" /E /XO', @SystemDir)
    EndIf
    FileSetAttrib (($src), '+O')
    Exit

    Wie kann ich dazu noch folgendes hinzufügen:

    Lösche "E:\taegl_Backup_P1\2020-02-06"?

    Mit

    AutoIt
    Local $String = StringMid ("E:\taegl_Backup_P1\2022-02-06" , 1, 26)
    $sNewDate = StringReplace(_DateAdd('Y', -2, "2022-02-06"), "/", "-")
    MsgBox(4096, "", $String & $sNewDate)

    gibt die MsgBox zwar E:\taegl_Backup_P1\2020-02-06 aus -

    aber DirRemove braucht den path.

    Kann ich statt in die MsgBox einen path für DirRemove ausgeben oder gibt es einen anderen Weg?

    EDIT BugFix: Bitte setze deinen Code in Code-Boxen (Menü: </>, Sprachauswahl: AutoIt), habe das mal für dich gemacht.

  • Erneut: das Fileexists kannst du weg lassen.

    Warum du das kompliziert mit Stringmid machst anstatt StringTrimRight("E:\taegl_Backup_P1\2022-02-06", 3) weiß ich nicht, da du dann unabhängig vom vorangehenden Pfad bist, die Ordnernamen bezüglich Datum aber immmer gleich ist und du bei einem geänderten Speicherort sicherer wärst.

    Du hast doch den Path in deiner MsgBox schon zusammen gebaut, das brauchst du nur übernehmen:

    DirRemove($String & $sNewDate)

    Aber das ist definitiv Falsch, denn das Ergebnis wäre: E:\taegl_Backup_P1\2022-022020-02-06

    Richtig wäre:

    AutoIt
    Local $String = StringMid ("E:\taegl_Backup_P1\2022-02-06" , 1, 19) ;- Oder aus meiner Sicht besser: StringTrimRight("E:\taegl_Backup_P1\2022-02-06", 10)
    $sNewDate = StringReplace(_DateAdd('Y', -2, "2022-02-06"), "/", "-")
    DirRemove($String & $sNewDate)
  • Nach eine Anmerkung:

    Wenn ich das richtig sehe, hast Du zwei feste Rootpfade für die Quell- und Zielverzeichnisse:

    AutoIt
    Const $SrcPath = 'E:\taegl_Backup_P1\'
    Const $DstPath = 'E:\jaehrl_Backup\'

    Dazu kommt für die Kopier- bzw Löscharbeiten noch ein Datum:

    AutoIt
    Local $Date = '2022-02-06'

    Für das Quellverzeichnis brauchst Du das komplette Datum, für das Zielverzeichnis nur den Teil JJJJJ-TT. Den kannst Du mit StrMid() isolieren:

    AutoIt
    Local $JJJJJTT = StringMid(1, 7)

    Außerdem willst die Teile des Datums wie das Jahr verändern. Beim Jahr gibt es beim Addieren bzw. Subtrahieren kein Problem, weil es 'mit an Sicherheit grenzender Wahrscheinlichkeit' vierstellig ist und bleibt. Du kannst das deshalb einfach so lösen:

    AutoIt
    Local $NewDate = (StringMid($Date, 1, 4) - 2) & StringMid($Date, 5)

    Mit diesem Gerüst aus Variablen und Anweisungen kannst Du Dir die kompletten Pfade Deiner Quell- und Zielverzeichnisse variabel zusammenstellen.