1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. mr_merlin

Beiträge von mr_merlin

  • Ältere Dateien Löschen

    • mr_merlin
    • 31. Oktober 2012 um 08:41

    Hallo autoBert,

    genau das, woran ich gescheitert bin, hast du geschafft - funktioniert tadellos - RESPEKT und DANKE !!!!!!!

    Das einzige was noch nicht funktioniert ist, das alle (*.* - in deinem Skript nur *) Dateien in den rekursiven Ordner löschen. Macht aber ürberhaupt nichts. Diesen Umstand werde ich auch allene lösen können.

    lg

    Merlin

  • Ältere Dateien Löschen

    • mr_merlin
    • 30. Oktober 2012 um 16:22

    Vorerst danke für die rasche Antwort.

    Es löscht zwar wunderbar das *.pdf-File aus dem Root-Verzeichnis. Das war es aber schon. Alle rekursiv aufgerufenen Unterverzeichnisse bleiben aber leider unberührt.

  • Ältere Dateien Löschen

    • mr_merlin
    • 30. Oktober 2012 um 16:02

    Hallo allerseits,

    anscheinend bin ich zu blöd oder gehe von falschen Voraussetzungen aus :(

    Ich verwende die UDF von Oscar und Micha_he namens _FileDeleteAfterXDays. Diese löscht mir tadellos alle Dateien und ev. auch Ordner, die ein gewisses Alter haben. Soweit so gut. Ich will jedoch nicht alle Dateien in einer unbestimmten Anzahl von Ordnern, sondern nur jene, mit einer bestimmten Endung (z.B. *.pdf). Habe nun schon einiges versucht bin aber immer klaglos gescheitert. Ist eine Datei mit der Endung (z.B. *.pdf) im Rootverzeichnis vorhanden, wird sie gelöscht. Alle anderen Dateien in den weiteren Unterverzeichnissen bleiben aber stehen.

    Die ursprüngliche Funktion:

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <File.au3>
    #include <Array.au3>
    $Server=("C:\Temp")
    $Tage=1
    $Filter=("*.pdf")
    _FileDeleteAfterXDays($Server,$Tage,True,True,True,True)
    ;===============================================================================
    ; Function Name: _FileDeleteAfterXDays($sPath, $iDays[, $bForceDel][, $bRek][, $bDirDel][, $bLog])
    ; Description:: löscht Dateien in einem ausgewähltem Verzeichnis (rekursiv)
    ; nach einer angegebenen Anzahl von Tagen
    ; Parameter(s): $sPath = Verzeichnis, aus dem die Dateien gelöscht werden sollen.
    ; $iDays = Dateien, die älter als $iDays (in Tagen) sind, löschen.
    ; $bForceDel = wenn "True" werden auch Dateien/Verzeichnisse gelöscht,
    ; die gegen löschen geschützt sind ("R"-Attribut)
    ; $bRek = wenn "True" wird das Verzeichnis rekursiv (inkl. Unter-
    ; verzeichnisse) durchsucht.
    ; $bDirDel = wenn "True" wird das Unterverzeichnis gelöscht, wenn
    ; es (aufgrund der Löschaktion) leer ist.
    ; $bLog = wenn "True" wird das Ergebnis der Löschaktion in die
    ; Console geschrieben.
    ; Requirement(s): AutoIt-Version min. v3.3.2.0
    ; #include <Date.au3>
    ; Return Value(s): bei Erfolg Rückgabe = 1
    ; bei Fehler Rückgabe = 0
    ; und @error:
    ; 1 = $iDays ist keine oder eine negative Zahl
    ; 2 = Das übergebene Verzeichnis existiert nicht oder ist leer.
    ; Author(s): Oscar (http://www.autoit.de)
    ; Micha_he (http://www.autoit.de)
    ;
    ;===============================================================================
    Func _FileDeleteAfterXDays($sPath, $iDays, $bForceDel = False, $bRek = True, $bDirDel = True, $bLog = True)
    Local $hSearchm, $hEmpty, $sFile, $sDate, $iRet
    If (Not IsNumber($iDays)) Or ($iDays < 0) Then Return SetError(1, 0, 0)
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Then Return SetError(2, 0, 0)
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If @extended Then
    If $bRek Then
    _FileDeleteAfterXDays($sPath & $sFile, $iDays, $bForceDel, $bRek, $bDirDel, $bLog)
    If $bDirDel Then
    $hEmpty = FileFindFirstFile($sPath & $sFile & '\*.*')
    If @error Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = DirRemove($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete Folder "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    FileClose($hEmpty)
    EndIf
    EndIf
    Else
    $sDate = StringRegExpReplace(FileGetTime($sPath & $sFile, 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    If _DateDiff('D', $sDate, _NowCalc()) > $iDays Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = FileDelete($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete File "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    EndIf
    WEnd
    FileClose($hSearch)
    Return 1
    EndFunc

    [/autoit]


    Wäre absolut toll, wenn mir jemand helfen könnte.

    lg

    Merlin

  • Spalten eines Arrays löschen

    • mr_merlin
    • 17. Oktober 2012 um 16:35
    Zitat von chip

    Mir würde nur einfallen den Array in einer Schleife komplett durchgehen und nur die benötigten Spalten in neuen Array schreiben.

    Danke für die rasche Antwort,

    ich werde das so lösen. Hatte vorerst gedacht, dass dies ein wenig einfacher gehen würde. Obwohl die Array-Behandlung in AutoIT wirklich schon sehr mächtig ist, gibt es doch nicht alles. Nur wenn ich bedenke, welchen Code ich für so Manches in C# schreiben müsste, ist AutoIT für den täglichen Gebrauch einfach ein Hit.

    Schöne Grüße

    mr_merlin

  • Spalten eines Arrays löschen

    • mr_merlin
    • 17. Oktober 2012 um 15:52

    Hallo allerseits,

    ich bin noch sehr neu in der AutoIt Programmierung und habe folgende Frage:

    Ich lese von einem Server den Schedul-Task aus, filtere ihn, sodass nur meine eingerichteten Tasks angezeigt werden und speichere alles in eine .csv-Datei. Bis dahin ging ja alles gut. Anschließend lese ich die .csv Datei in ein Array ein. Nun möchte ich aber einige Spalten, die ich absolut nicht benötige aus dem Array entfernen und das bereinigte Array aus der Funktion übergeben. Wie kann ich vor der Übergabe die nicht benötigten Array-Spalten löschen - leider finde ich nichts Brauchbares. Kann mir da jemand helfen?

    [autoit]

    Global $Server
    Global $a_task
    Func _taskread($server)
    If FileExists(@WorkingDir&"\taskerg_"&$Server&".txt") Then
    FileDelete(@WorkingDir&"\taskerg_"&$Server&".txt")
    EndIf

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

    If FileExists(@WorkingDir&"\taskerg_"&$server&".csv") Then
    FileDelete(@WorkingDir&"\taskerg_"&$server&".csv")
    EndIf

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

    RunWait(@ComSpec & " /c " & "schtasks /query /fo CSV /s "&$server&" /v > "&@WorkingDir&"\taskerg_"&$server&".txt",@WorkingDir,@SW_HIDE)
    Sleep(2000)

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

    If FileExists(@WorkingDir&"\taskerg_"&$server&".txt") Then
    Global $a_task
    Global $taskread
    _FileReadToArray(@WorkingDir&"\taskerg_"&$server&".txt",$a_task)
    If IsArray($a_task) Then
    $ergfile=FileOpen(@WorkingDir&"\taskerg_"&$server&".csv",1)
    For $x=1 To $a_task[0]
    $szeile=StringReplace($a_task[$x],'","',";")
    $szeile=StringReplace($szeile,'"',"")
    If Not StringInStr($szeile,"Hostname") And Not StringInStr($szeile,"\Microsoft\") And Not StringInStr($szeile,"\OfficeSoftwareProtectionPlatform\") Then
    FileWriteLine($ergfile,$szeile)
    EndIf
    Next
    FileClose($ergfile)
    _FileReadToArray(@WorkingDir&"\taskerg_"&$server&".csv",$taskread)
    Else
    Return(0)
    EndIf
    Else
    Return(0)
    EndIf

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™