File wird nicht gelöscht!?!

  • Hi Leute Ich habe das Problem das AutoIT den FileDelete Befehl nicht ausführt warum habe ich keine Ahnung BITTE HELFT MIR

    [autoit]

    Func eMail()
    $AktuellesDatum = _NowCalc()
    $AktuellesDatum = StringReplace($AktuellesDatum, "/", ".")
    $AktuellesDatum = StringReplace($AktuellesDatum, ":", "-")
    _FileCreate($PfadMailDatei)
    $InhaltLogDatei = FileRead($PfadLogDatei)
    FileOpen($PfadMailDatei, 1)
    FileWriteLine($PfadMailDatei,"To: abt-edv@witty.de")
    FileWriteLine($PfadMailDatei,"From: abt-edv@witty.de")
    FileWriteLine($PfadMailDatei, $Meldung) ; $Meldung wird durch Funktion Standardmeldung oder Fehlermeldung gesetzt, siehe Kopieren automatisch ja/nein
    FileWrite($PfadMailDatei, $InhaltLogDatei)
    FileClose($PfadMailDatei)
    FileCopy($PfadMailDatei, $PfadArchivMailDatei&$AktuellesDatum&".log",8)
    FileDelete($PfadMailDatei)
    EndFunc

    [/autoit]


    für Leute die den ganzen Quellcode brauchen :

    [autoit]

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

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

    Autor: Harald Meißner
    Datum: 09.03.2010
    Version: 1.0
    Funktion: Kopieren der Inhalte des Laufwerks I: um Daten für NB bereitzustellen mit Abfrage Datenmenge
    Beschreibung:

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

    #ce ----------------------------------------------------------------------------
    #Include <File.au3>
    #include <String.au3>
    #include <Date.au3>

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

    $Meldung = ""

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

    $Byte = "Byte"
    $Kilobyte = "Kilobyte"
    $Megabyte = "Megabyte"
    $Gigabyte = "Gigabyte"
    $Terabyte = "Terabyte"

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

    $PfadLogDatei = "G:\Skripte\AutoIT\Robocopy_Script\klg.txt"
    $PfadMailDatei = "G:\Skripte\AutoIT\Robocopy_Script\Mail.log"
    $PfadArchivMailDatei = "G:\Skripte\AutoIT\Robocopy_Script\Archiv\"

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

    $LogDatei = FileOpen($PfadLogDatei,0) ;LogDatei öffnen

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

    While 1 ;Benötigte Zeile ermitteln
    $Zeile = FileReadLine($LogDatei)
    $ZeileBytes = StringLeft($Zeile, 11)
    If $ZeileBytes = " Bytes :" Then ExitLoop
    ;MsgBox(0, "in Schleife", $Zeile)
    Wend

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

    MsgBox(0, "nach Schleife:", $Zeile)

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

    $EinheitTotal = StringMid($Zeile, 21, 1) ;Größeneinheit gesamte Datenmenge (in LogDatei Bezeichnung Total)
    $EinheitKopiert = StringMid($Zeile, 31, 1) ;Größeneinheit zu kopierende Datenmenge (in LogDatei Bezeichnung Copied)
    ;MsgBox(0, "Total:", $EinheitTotal)
    ;MsgBox(0, "Copied:", $EinheitKopiert)

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

    $MengeTotal = StringMid($Zeile, 12, 9) ;Menge Total ermitteln und formatieren
    ;MsgBox(0, "Menge Total unformatiert", $MengeTotal)
    $MengeTotal = StringReplace($MengeTotal, " ", "") ;entfernt Leerzeichen
    ;MsgBox(0, "Menge Total formatiert", $MengeTotal)

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

    $MengeKopiert = StringMid($Zeile, 22, 9) ;Menge Kopiert ermitteln und formatieren
    ;MsgBox(0, "Menge Kopiert unformatiert", $MengeKopiert)
    $MengeKopiert = StringReplace($MengeKopiert, " ", "") ;entfernt Leerzeichen
    ;MsgBox(0, "Menge Kopiert formatiert", $MengeKopiert)

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

    EinheitUmbenennen() ;Funktion Umbenennen aufrufen (macht aus b = Byte usw.)

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

    ;---------------Kopieren automatisch ja/nein------------------------------------------------
    Select ;Festlegen ob automatisch kopiert wird oder nicht. Sollen mehr als 2 MB
    Case $EinheitKopiert = "Byte" ;kopiert werden, wird eine Mail an Abt-EDV verschickt.
    MsgBox(0,"Kleiner 2 MB", $MengeKopiert & " " & $EinheitKopiert) ;Diese legt dann fest was passiert.
    Standardmeldung()
    eMail()
    Case $EinheitKopiert = "Kilobyte"
    MsgBox(0,"Kleiner 2 MB", $MengeKopiert & " " & $EinheitKopiert)
    Standardmeldung()
    eMail()
    Case $EinheitKopiert = "Megabyte" AND $MengeKopiert <= 2
    MsgBox(0,"Kleiner Gleich 2 MB", $MengeKopiert & " " & $EinheitKopiert)
    Standardmeldung()
    eMail()
    Case $EinheitKopiert = "Megabyte" AND $MengeKopiert > 2
    MsgBox(0,"Größer 2 MB", $MengeKopiert & " " & $EinheitKopiert)
    Fehlerdmeldung()
    eMail()
    Case $EinheitKopiert = "Gigabyte"
    MsgBox(0,"Größer 2 MB", $MengeKopiert & " " & $EinheitKopiert)
    Fehlerdmeldung()
    eMail()
    Case $EinheitKopiert = "Terabyte"
    MsgBox(0,"Größer 2 MB", $MengeKopiert & " " & $EinheitKopiert)
    Fehlerdmeldung()
    eMail()
    Case Else
    EndSelect

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

    FileClose($PfadLogDatei)

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

    ;----------------------------------Funktionen-------------------------------------------------------------
    Func EinheitUmbenennen() ;Funktion Umbenennen (macht aus b = Byte usw.)
    Select
    Case $EinheitKopiert = "b"
    $EinheitKopiert = "Byte"
    Case $EinheitKopiert = "k"
    $EinheitKopiert = "Kilobyte"
    Case $EinheitKopiert = "m"
    $EinheitKopiert = "Megabyte"
    Case $EinheitKopiert = "g"
    $EinheitKopiert = "Gigabyte"
    Case $EinheitKopiert = "t"
    $EinheitKopiert = "Terabyte"
    Case Else
    EndSelect
    EndFunc

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

    Func eMail()
    $AktuellesDatum = _NowCalc()
    $AktuellesDatum = StringReplace($AktuellesDatum, "/", ".")
    $AktuellesDatum = StringReplace($AktuellesDatum, ":", "-")
    _FileCreate($PfadMailDatei)
    $InhaltLogDatei = FileRead($PfadLogDatei)
    FileOpen($PfadMailDatei, 1)
    FileWriteLine($PfadMailDatei,"To: abt-edv@witty.de")
    FileWriteLine($PfadMailDatei,"From: abt-edv@witty.de")
    FileWriteLine($PfadMailDatei, $Meldung) ; $Meldung wird durch Funktion Standardmeldung oder Fehlermeldung gesetzt, siehe Kopieren automatisch ja/nein
    FileWrite($PfadMailDatei, $InhaltLogDatei)
    FileClose($PfadMailDatei)
    FileCopy($PfadMailDatei, $PfadArchivMailDatei&$AktuellesDatum&".log",8)
    FileDelete($PfadMailDatei)
    EndFunc

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

    Func Standardmeldung()
    $Meldung = "Subject: Datenmenge <= 2MB (" & $MengeKopiert & " " & $EinheitKopiert & ") "
    EndFunc

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

    Func Fehlerdmeldung()
    $Meldung = "Subject: FEHLER, Datenmenge > 2MB (" & $MengeKopiert & " " & $EinheitKopiert & ") "
    EndFunc

    [/autoit]


    DANKE SCHON MAL IM VORAUS![MSIE_newline_end ]

  • Hi,

    das File ist noch geöffnet, da FileClose nur Filehandles nutzt:

    [autoit]


    $file = FileOpen($PfadMailDatei, 1)
    FileWriteLine($file,"To: abt-edv@witty.de")
    FileWriteLine($file,"From: abt-edv@witty.de")
    FileWriteLine($file, $Meldung) ; $Meldung wird durch Funktion Standardmeldung oder Fehlermeldung gesetzt, siehe Kopieren automatisch ja/nein
    FileWrite($file, $InhaltLogDatei)
    FileClose($file)
    FileCopy($PfadMailDatei, $PfadArchivMailDatei&$AktuellesDatum&".log",8)
    FileDelete($PfadMailDatei)

    [/autoit]

    ;-))
    Stefan

  • Hallo hame1992,

    da du FileOpen benutzt musst du auch nachfolgende Befehle über das von FileOpen zurückgegeben Handle machen. Das ganze sieht dann so aus:

    [autoit]

    Func eMail()
    $AktuellesDatum = _NowCalc()
    $AktuellesDatum = StringReplace($AktuellesDatum, "/", ".")
    $AktuellesDatum = StringReplace($AktuellesDatum, ":", "-")
    _FileCreate($PfadMailDatei)
    $InhaltLogDatei = FileRead($PfadLogDatei)
    $hfadMailDatei = FileOpen($PfadMailDatei, 1)
    FileWriteLine($hPfadMailDatei,"To: abt-edv@witty.de")
    FileWriteLine($hPfadMailDatei,"From: abt-edv@witty.de")
    FileWriteLine($hPfadMailDatei, $Meldung) ; $Meldung wird durch Funktion Standardmeldung oder Fehlermeldung gesetzt, siehe Kopieren automatisch ja/nein
    FileWrite($hPfadMailDatei, $InhaltLogDatei)
    FileClose($hPfadMailDatei)
    FileCopy($PfadMailDatei, $PfadArchivMailDatei&$AktuellesDatum&".log",8)
    FileDelete($PfadMailDatei)
    EndFunc

    [/autoit]

    mfg (Auto)Bert