Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1040to1044
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien löschen auch in Unterordner

Dateien löschen auch in Unterordner
16.01.2009 12:10:00
Andre´
Hallo alle zusammen,
Ich möchte alle TXT-Dateien löschen die sich unter:
C:\Backup\Jahr
befinden aber nur wenn diese älter als 60 Tage sind.
Dabei sollen auch alle Unterordner falls vorhanden durchsucht werden.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus!
MFG Andre

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien löschen auch in Unterordner
16.01.2009 12:19:13
Josef
Hallo Andre,
Vorsicht!, es erfolgt keine Rückfrage und die Dateien werden entgültig gelöscht!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub deleteFiles()
    Dim a
    Dim result As Long, l As Long
    
    result = FileSearchINFO(a, "C:\Backup\Jahr\", "*.txt", True)
    
    If result <> 0 Then
        
        For l = 0 To UBound(a)
            If Clng(a(l).DateCreated) < Clng(Date - 60) Then
                Kill a(l)
            End If
        Next
        
    End If
    
End Sub

'by J.Ehrensberger
Private Function FileSearchINFO(ByRef Files As Variant, ByVal InitialPath As String, Optional ByVal FileName As String = "*", _
        Optional ByVal SubFolders As Boolean = False) As Long

    
    '# PARAMETERINFO:
    '# Files: Datenfeld zur Ausgabe der Suchergebnisse
    '# InitialPath: String der das zu durchsuchende Verzeichnis angibt
    '# FileName: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, Standard="*.*" findet alle Dateien)
    '# Beispiele: "*.txt" - Findet alle Textdateien
    '# "*name*" - Findet alle Dateien mit "name" im Dateinamen
    '# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
    '# SubFolders: Boolean gibt an, ob Unterordner durchsucht werden sollen (Optional, Standard=False)
    
    
    Dim fobjFSO As Object, ffsoFolder As Object, ffsoSubFolder As Object, ffsoFile As Object
    Dim intC As Integer, varFiles As Variant
    
    Set fobjFSO = CreateObject("Scripting.FileSystemObject")
    
    Set ffsoFolder = fobjFSO.GetFolder(InitialPath)
    
    On Error Resume Next
    
    If InStr(1, FileName, ";") > 0 Then
        varFiles = Split(FileName, ";")
    Else
        Redim varFiles(0)
        varFiles(0) = FileName
    End If
    For Each ffsoFile In ffsoFolder.Files
        If Not ffsoFile Is Nothing Then
            For intC = 0 To UBound(varFiles)
                If LCase(fobjFSO.GetFileName(ffsoFile)) Like LCase(varFiles(intC)) Then
                    If IsArray(Files) Then
                        Redim Preserve Files(UBound(Files) + 1)
                    Else
                        Redim Files(0)
                    End If
                    Set Files(UBound(Files)) = ffsoFile
                End If
            Next
        End If
    Next
    
    If SubFolders Then
        For Each ffsoSubFolder In ffsoFolder.SubFolders
            FileSearchINFO Files, ffsoSubFolder, FileName, SubFolders
        Next
    End If
    
    If IsArray(Files) Then FileSearchINFO = UBound(Files) + 1
    On Error GoTo 0
    Set fobjFSO = Nothing
    Set ffsoFolder = Nothing
End Function

Gruß Sepp

Anzeige
Sehr schöne Lösung :-) o.w.T.
16.01.2009 12:28:00
Ramses
...
AW: Dateien löschen auch in Unterordner
16.01.2009 13:09:41
Andre´
Hallo Sepp,
es funktioniert prima :-)))
Vielen Dank!!!
MFG Andre
@Sepp
16.01.2009 13:55:00
Tino
Hallo Sepp,
ich hatte einen fast Ähnlichen Code im Dezember für einen User geschrieben.
Wenn ich mir Deinen Code so ansehe, müsstest Du auf dass gleiche Problem stoßen wie ich.
Was passiert mit Deinem Code, wenn er auf einen geschützten Systemordner trifft.
https://www.herber.de/forum/archiv/1032to1036/t1035155.htm#1035168
Gruß Tino
AW: @Sepp
16.01.2009 15:30:40
Josef
Hallo Tino,
im angesprochenen Verzeichnis muss man natürlich die entsprechenden Rechte haben.
Darum habe ich auch "On Error Resume Next" im Code.
Gruß Sepp

Anzeige
AW: @Sepp
16.01.2009 16:18:35
Tino
Hallo,
Beispiel, folgender Aufbau
C:\Ordner1\ Ordner 2\ Ordner1
C:\Ordner1\ Ordner 2\ Ordner2
C:\Ordner1\ Ordner 2\ Ordner3
C:\Ordner1\ Ordner 2\ Ordner4
C:\Ordner1\ Ordner 3\ Ordner1
Als Suchpfad übergebe ich an die Prozedur „C:\Ordner1“
Angenommen bei
C:\Ordner1\ Ordner 2\ Ordner1
wird der Zugriff verweigert, dann werden die nachfolgenden Ordner nicht mehr Durchsucht.
C:\Ordner1\ Ordner 2\ Ordner2
C:\Ordner1\ Ordner 2\ Ordner3
C:\Ordner1\ Ordner 2\ Ordner4
Der Inhalt dieser Ordner fehlt, obwohl diese nicht geschützt sind.
In Ordner
C:\Ordner1\ Ordner 3
Geht’s wieder normal weiter.
Mir war dies nur mal aufgefallen,
weil einige Dateien gefehlt haben obwohl diese vorhanden waren.
Hatte auch On Error Resume Next verwendet
Gruß Tino
Anzeige
AW: @Tino
16.01.2009 19:58:00
Erich
Hi Tino,
bei Sepps Code werden nachfolgende Ordner einer Ebene weiter durchsucht, auch wenn ein Ordner
wegen Schutz einen Fehler verursacht - Sepp arbeitet mit "On Error Resume Next".
In deinem oben verlinkten Code ( AW: Bestimmte Datei auflisten ? vom 25.12.2008 10:47:06 )
steht dagegen "On Error GoTo Err_Zugriff:". Die Zielmarke steht am Ende der Prozedur,
damit wird auch die Schleife verlassen, nachfolgende Ordner bleiben unberücksichtigt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: @Tino
16.01.2009 20:28:45
Tino
Hallo,
mein Beispiel listet aber alle auf. ;-)
Bei Sepp seiner Version fehlen die besagten Dateien.
Vermutlich liegt es daran, weil der geschützte Ordner in
For Each ffsoSubFolder In ffsoFolder.SubFolders
auch einen Fehler verursacht und ffsoSubFolder dann Nothing ist.
und dies wird an FileSearchINFO übergeben.
Ist aber auch Egal, ich nehm lieber meine Version.
Gruß Tino
Anzeige
noch mal getestet,...
16.01.2009 21:51:59
Tino
Hallo,
definitiv es fehlen bei Sepp seiner Version Dateien,
die im Zusammenhang mit geschützten Ordnern stehen die sich im Unterordner befinden.
Gruß Tino
AW: @Sepp: evtl. kleine Ergänzung
16.01.2009 20:16:00
Erich
Hallo Sepp,
da auch mir die Funktion sehr gefällt, hab ich sie gleich in meinen "Werkzeugkasten" gelegt.
Eine kleine Ergänzung habe ich vorgenommen: Hinter
Set Files(UBound(Files)) = ffsoFile
habe ich ein Exit For eingefügt.
Dann wird ein File nicht doppelt ins Array geschrieben, wenn der FileName auf mehr als ein varFiles(..) passt.
(Spielt aber nur eine Rolle, wenn die Suchmuster nicht disjunkt sind.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: @Sepp: evtl. kleine Ergänzung
16.01.2009 20:28:00
Josef
Hallo Erich,
danke, das habe ich noch gar nicht bedacht. Ich habe diese Funktion schon vor einiger Zeit erstellt, die Möglichkeit mehrere Dateitypen/Suchbegriffe anzuführen habe ich allerding erst vor ein paar Tagen hinzugefügt und daher diese Version noch nicht intensiv ausgetestet.
Gruß Sepp

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige