Denkfehler Array

  • Hallo zusammen,

    ich habe ein kleine Problem. Das Skript von mir liest alles ein ertsellt das Araay und das passt.

    [autoit]

    $Log = "D:\test.log"
    Dim $aMSPdel
    Local $sReturnSize = '363725', $sSize
    $date = _NowCalcDate()
    $date = StringRegExpReplace($date, "(\d{4})\/(\d{2})\/(\d{2})", "$3.$2.$1")
    $dir = "d:\test\"
    $aMSPdel = _FileListToArray($dir, '*', 1)
    _ArrayDelete($aMSPdel, 0)
    For $i = 0 To UBound($aMSPdel) - 1
    $sSize = FileGetSize($dir & $aMSPdel[$i])
    If Not @error Then
    If $sSize = $sReturnSize Then
    $hfile = FileOpen($Log, 10)
    FileSetAttrib($dir & $aMSPdel[$i], "-RASH")
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    FileWrite($hfile, @ComputerName & " " & $date & @CRLF)
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    FileWrite($hfile, "Datei: " & $dir & $aMSPdel[$i] & " gelöscht." & @CRLF)
    FileDelete($dir & $aMSPdel[$i])
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    FileClose($hfile)
    EndIf
    Else
    Exit
    EndIf
    Next

    [/autoit]

    Ich bekomme es nur nicht hin das er mir alle Dateien die er löscht auch ins Log schreibt, er scheibt mir nur die erste rein.

    Ich weis das es in der einen For-Schleife auch so nicht funktionieren kann, aber ich bekomms grad nicht hin.

    Wäre schön wenn mir jemand helfen könnte.

    LG

    Schnuecks

    Einmal editiert, zuletzt von Schnuecks (5. Oktober 2010 um 11:32)

  • Ich kann grad nicht ganz folgen, weil ich nirgendwo etwas von FIleDelete() sehe.
    Deine Log Datei öffnest du aber im Modus 8+2. Modus 2 löscht den vorherigen Dateiinhalt vor dem schreiben. Mit Modus 8+1 wird an's Dateiende angehängt. Es ist auch nicht unbedingt nötig, die Datei innerhalb der FOR-Schleife immer wieder zu öffnen und zu schliessen.

    Spoiler anzeigen
    [autoit]

    $Log = "D:\test.log"
    Dim $aMSPdel
    Local $sReturnSize = '363725', $sSize
    $date = _NowCalcDate()
    $date = StringRegExpReplace($date, "(\d{4})\/(\d{2})\/(\d{2})", "$3.$2.$1")
    $dir = "d:\test\"
    $aMSPdel = _FileListToArray($dir, '*', 1)
    _ArrayDelete($aMSPdel, 0)
    $hfile = FileOpen($Log, 9)
    For $i = 0 To UBound($aMSPdel) - 1
    $sSize = FileGetSize($dir & $aMSPdel[$i])
    If Not @error Then
    If $sSize = $sReturnSize Then
    FileSetAttrib($dir & $aMSPdel[$i], "-RASH")
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    FileWrite($hfile, @ComputerName & " " & $date & @CRLF)
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    FileWrite($hfile, "Datei: " & $dir & $aMSPdel[$i] & " gelöscht." & @CRLF)
    FileDelete($dir & $aMSPdel[$i])
    FileWrite($hfile, "------------------------------------------------" & @CRLF)
    EndIf
    Else
    Exit
    EndIf
    Next
    FileClose($hfile)

    [/autoit]