Temp Ordner leeren...

  • Salute,

    ich möchte ein Skript schreiben, welches regelmäßig meinen Temp Ordner leert.

    So weit, so gut..., jetzt habe ich aber Dateien im Temp Ordner die sich nicht löschen lassen und die wohl auch noch gebraucht werden. Diese sollen nicht gelöscht werden.

    Wie unterdrücke ich nun die nervende Meldung "Die Datei xyz kann nicht gelöscht werden..." ?
    Denn wenn diese Meldung aufgetaucht ist bricht er den Löschvorgang ab.

    Also noch einmal im Klartext: Nicht löschbare Dateien/Ordner sollen übersprungen werden, alles andere soll gelöscht werden !


    Gruß
    Greenhorn


  • ehm....ich seh grad mal kei problem dadrinn....


    @TempDir => Temporärer Ordner (denk mal den willste löschen)

    und mit FileDelete ( "path" ) geht das wunderbar was du willst....

    Code
    [I]in der hilfe steht[/I]
    Return Value
    
    
    Success: Return 1. 
    Failure: Returns 0 if files are not deleted or do not exist.


    FileRecycle ( "source" ) ist im grunde das gleiche schiebt es aber in den papierkorb....
    auch es gab da im tmp verzeichnis so ne index datei die nicht löschen ist sehr unpraktisch...;)

    der snoozer

    PS:falls du was anders machen wolltest sag bescheid ;)
    PSS:um dateneinzulesen die gelöscht werden sollen...FileFindFirstFile ( "filename" ) gibt aber auch genügend sachen hier im forum....;)

  • muss dich korrigieren..es gibt 2 temp ordner xD


    start ---> ausführen:


    temp

    öffnet den erstne tempordner

    und das ganze nochmal:


    start ---> ausführen:

    %temp%


    2 ordner xD

  • Hallo,

    so geht's auch ...

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    Global Const $ES_AUTOVSCROLL = 64
    Global Const $ES_AUTOHSCROLL = 128
    Global Const $ES_WANTRETURN = 4096
    Global Const $WS_POPUPWINDOW = 0x80880000
    Global Const $WS_EX_CLIENTEDGE = 0x00000200
    Global Const $WS_EX_TOOLWINDOW = 0x00000080
    Global Const $ES_READONLY = 0x0800
    Global Const $GUI_SHOW = 16
    Global Const $GUI_HIDE = 32
    Global Const $GUI_DISABLE = 128
    ### Koda GUI section start ###
    $Form1 = GUICreate("TempKill", 309, 106, -1, -1,$WS_POPUPWINDOW);,$WS_EX_TOOLWINDOW)
    GUISetBkColor(0x000080)
    $Edit1 = GUICtrlCreateEdit("", 8, 40, 289, 24,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY),0)
    GUICtrlSetData($Edit1, "1")
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFEADA2)
    GUICtrlSetBkColor(-1, 0x000000)
    $Edit2 = GUICtrlCreateEdit("", 8, 74, 289, 24,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY),0)
    GUICtrlSetData($Edit2, "2")
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xC0C0FF)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetState($Edit2,$GUI_HIDE)
    $Edit3 = GUICtrlCreateEdit("", 297, 70, 301, 24,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetState($Edit3,$GUI_HIDE)
    GUICtrlCreateLabel("Temporäre Windows- / Internet-Dateien löschen", 8, 8, 292, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xE0E0E0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUISetState(@SW_SHOW)

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

    $begintime = TimerInit()
    $tmptotal = 0
    GUICtrlSetData($Edit1, "Bitte etwas Geduld ...")
    $drives = DriveGetDrive("fixed")
    If NOT @error Then
    For $i = 1 to $drives[0]
    If DriveStatus($drives[$i] & "\") = "READY" then
    if FileExists($drives[$i] & "\Dokumente und Einstellungen\") then
    $users = FileFindFirstFile($drives[$i] & "\Dokumente und Einstellungen\*.*")
    If $users <> -1 Then
    while 1
    $cuser = FileFindNextFile($users)
    If @error Then ExitLoop
    if $cuser = "All Users" or $cuser = "Default User" or $cuser = "LocalService" or $cuser = "NetworkService" or $cuser = "." or $cuser = ".." then ContinueLoop
    delcont($drives[$i] & "\Dokumente und Einstellungen\" & $cuser & "\Lokale Einstellungen\Temp", "", 0)
    delcont($drives[$i] & "\Dokumente und Einstellungen\" & $cuser & "\Lokale Einstellungen\Temporary Internet Files\Content.IE5", ".txt", 0)
    wend
    Endif
    FileClose($users)
    Endif
    delcont($drives[$i] & "\Windows\Temp", "", 0)
    delcont($drives[$i] & "\Windows\Temporary Internet Files\Content.IE5", ".txt", 0)
    Endif
    Next
    Endif
    $diff = TimerDiff($begintime)
    $tmptotal1 = $tmptotal
    $totaltime = _FormatTime($diff)
    GUICtrlSetData($Edit1, "Dateien gelöscht ........... : " & $tmptotal1)
    GUICtrlSetState($Edit2,$GUI_SHOW)
    GUICtrlSetData($Edit2, "Zeit (hh:mm:ss,ms)....... : " & $totaltime)
    Sleep(2000)
    ; ----> Funktionen
    Func _fill($text, $lenght, $char = "0")
    While StringLen($text) < $lenght
    $text = $char & $text
    WEnd
    Return $text
    EndFunc
    Func _FormatTime($_time)
    $_hours = Floor($_time / 1000 / 3600)
    If $_hours < 10 Then $_hours = "0" & $_hours
    $_min = Int($_time / 1000 / 60)
    If $_min < 10 Then $_min = "0" & $_min
    $_sec = Int($_time / 1000)
    If $_sec < 10 Then $_sec = "0" & $_sec
    $_millisec = Round(Mod($_time, 100), 0)
    If $_millisec < 10 Then $_millisec = "0" & $_millisec
    Return $_hours & ":" & $_min & ":" & $_sec & "," & $_millisec
    EndFunc
    Func delcont($folder, $filespec, $dlfldr)
    If not FileExists($folder) then return
    If StringInStr(FileGetAttrib($folder), "D") then
    $cur = FileFindFirstFile($folder & "\*")
    While 1
    $curfile = FileFindNextFile($cur)
    If @error Then ExitLoop
    If $curfile = "." or $curfile = ".." then ContinueLoop
    If StringInStr(FileGetAttrib($folder & "\" & $curfile), "D") then
    delcont($folder & "\" & $curfile, $filespec, 1)
    Else
    If $filespec = "" then
    mydel($folder & "\" & $curfile)
    Else
    If not StringInStr($curfile, $filespec) then
    mydel($folder & "\" & $curfile)
    Endif
    Endif
    Endif
    WEnd
    FileClose($cur)
    If $dlfldr = 1 then rmifempty($folder)
    Endif
    Endfunc

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

    Func mydel($fl)
    If StringInStr(FileGetAttrib($fl), "R") then FileSetAttrib($fl, "-R")
    $tst = FileDelete($fl)
    If $tst <> 0 then $tmptotal = $tmptotal + 1
    Endfunc

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

    Func rmifempty($fl)
    $fld = FileFindFirstFile($fl & "\*")
    While 1
    $fldr = FileFindNextFile($fld)
    If @error Then ExitLoop
    If $fldr = "." or $fldr = ".." then ContinueLoop
    Return
    WEnd
    FileClose($fld)
    DirRemove($fl)
    Endfunc

    [/autoit]

    für die Automatisierung kannste ja selbst sorgen *g*

    MfG
    trallala

    Einmal editiert, zuletzt von trallala (6. Mai 2007 um 17:55)

  • @Dr. Galvany

    Unter xp !

    @All

    Vielen Dank für die prompte und erstklassige Unterstützung !!!

    Habe mir das wohl schwieriger/komplizierter vorgestellt, als es wirklich ist...
    Dachte mir halt nur eben so, weil beim manuellen löschen des %Temp% Ordners immer diese nervenden Popups kamen...

    Vielen Dank auch an dich trallala, gutes Skript !
    Werde es wohl gleich in mein imaginäres Progrämmchen einbauen.

    Also noch einmal ganz fett: 1ooo Dank an euch alle ! *überwältigt bin*


    Gruß
    Greenhorn


  • Hi,

    BugFix : Danke für den Hinweis
    Der Fehler ist im gewissen Sinne kein Fehler, nur ein überbleibsel aus einer sehr
    alten Autoit-Version.

    Source ist entsprechend geändert.

    MfG
    trallala

    Einmal editiert, zuletzt von trallala (6. Mai 2007 um 17:55)