badfsaadkl
Goto Top

Visual Studio Datein älter x Tage löschen

Moin,

ich möchte auf einem Windows-Server in mehreren Pfaden nach Dateien bestimmter Endungen suchen, welche ein definiertes Alter überschreiten.
Das ganze soll via einer INI-Datei gesteuert werden.
Verarbeitung soll in einer EXE erfolgen.

Soweit funktioniert das Programm ja, ich habe in der INI Datei, mehrere Pfade, DateiTypen angegeben(Durch abfrage nach Stichwörtern), welche auch richtig ausgelesen werden.

Nur im Bereich des "IO.Directory.GetFiles" liefert das Programm mir immer nur den Letzten Pfad, und überspringt die ersten Verzeichnisse.
Denk mal das das Array irgendwie noch falsch ist.

Hier mal der Aufbau der INI-Datei:

Pfad;C:\Test\Ordner 01
Pfad;C:\Test\Ordner 02
Pfad;C:\Test\Ordner 03
Pfad;C:\Test\Ordner 04
Intervall;1
Typ;txt
Typ;xls

Das Programm sieht wie folgt aus:

'##########################################  
'Prüfen auf Dateien älter x zu aktuellem Datum  
'Source = INI-Datei mit zu prüfenden Angaben  
'(c) 22.06.2010  

Imports System
Imports System.IO
Module Win_Rotator

    Sub Main()
        Dim Source As String = Directory.GetCurrentDirectory() & "\Win_Rotator.ini"  
        Dim StreamReader As StreamReader = File.OpenText(Source)
        Dim LineInput As String
        Dim Typ() As String
        Dim Intervall, p, t As Integer
        Dim Pfad() As String
        Dim sFile() As String
        Dim Fileinfo As System.IO.FileInfo
        '##########################################  
        'Lesen der INI Datei  
        p = 0
        t = 0
        LineInput = StreamReader.ReadLine()
        Do While (LineInput <> Nothing)
            'MsgBox(LineInput & Chr(13))  
            If Left(LineInput, 5) = "Pfad;" Then  
                ReDim Preserve Pfad(p + 1)
                Pfad(p) = (Right(LineInput, Len(LineInput) - 5))
                p += 1
            End If
            If Left(LineInput, 4) = "Typ;" Then  
                ReDim Preserve Typ(t + 1)
                Typ(t) = (Right(LineInput, Len(LineInput) - 4))
                t += 1
            End If
            If Left(LineInput, 10) = "Intervall;" Then  
                Intervall = (Right(LineInput, Len(LineInput) - 10))
            End If

            LineInput = StreamReader.ReadLine()
        Loop
        p = 0
        t = 0
        Do While p <= UBound(Pfad) - 1
            'MsgBox(Pfad(p))  
            p = p + 1
        Loop
        Do While t <= UBound(Typ) - 1
            MsgBox(Typ(t))
            t = t + 1
        Loop
        'Console.WriteLine("Pfad: " & Pfad & ", Intervall: " & Intervall & ", Typ: " & Typ)  
        '##########################################  
        'Auslesen der Dateien  
        'Dim sFile() As String  

        p = p - 1
        t = t - 1
        sFile = IO.Directory.GetFiles(Pfad(p))
        Dim counter As Integer = 0
        Do Until counter = sFile.Length
            Fileinfo = New System.IO.FileInfo(sFile(counter))
            'Console.WriteLine(Fileinfo.Name)  
            'Console.WriteLine(Fileinfo.LastWriteTime.ToString)  
            counter += 1
            If Date.Now.Subtract(Fileinfo.LastWriteTime()).TotalDays >= Intervall Then
                Dim Check As String
                Check = Fileinfo.Extension
                If Check = "." & Typ(t) Then  
                    Console.WriteLine(Fileinfo.FullName)
                    'System.IO.File.Delete(Fileinfo.FullName)  
                End If
            Else
                'Console.WriteLine("Keine Datei gefunden!")  
            End If

        Loop
        '##########################################  
        Console.ReadLine()
    End Sub

End Module

Nur die Variable sFile nimmt immer nur den letzten Ordner.

Kann mir hier jemand helfen ?

Danke

Content-ID: 145864

Url: https://administrator.de/contentid/145864

Ausgedruckt am: 25.11.2024 um 20:11 Uhr