neocrown
Goto Top

VBS Script um bestimmte Dateien die älter als x Tage sind und im Namen -xyz- enthalten zu löschen

Hallo zusammen

Ich suche schon lange verzweifelt ohne Erfolg ein VBS Script, mit dem ich Dateien aus einem Ordner löschen kann,
die älter als x Tage sind und im Namen ein bestimmten Teil/Wort enthalten zB. *xyz*.
Wenn mir vieleicht jemand ein Beispiel hätte, um dieses Problem zu lösen, wäre ich sehr dankbar.
Ich darf nur ein VBS Skript verwenden, nichts anderes.

Grüsse NeoCrown

Content-ID: 174063

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

bastla
bastla 03.10.2011, aktualisiert am 18.10.2012 um 18:48:39 Uhr
Goto Top
Hallo NeoCrown und willkommen im Forum!

ZB: Löschen von alten Dateien und Verzeichnissen per VBS mit Ausnahmen....

Grüße
bastla
NeoCrown
NeoCrown 04.10.2011 um 08:49:50 Uhr
Goto Top
Hallo Bastla

Danke für deine Antwort. Leider nützt mir ein Ausschussverfahren nicht viel, da ich etwa 100 Ausschlüsse machen müsste.
Ich will wirklich nur Dateien die in meinem Fall zB. "BOOKINGSave201110030954" heissen löschen, also Wörter die den Teil
"Bookingsave2011########" enthalten und älter als ein Tag sind.

Grüsse
bastla
bastla 04.10.2011 um 09:24:13 Uhr
Goto Top
Hallo NeoCrown!

Und die Umkehrung von
If InStr(1, Exclude, Datei.Name & "#", vbTextCompare) = 0 Then
bekommst Du nicht selbst hin (Du hattest ja nur nach einem Beispiel gefragt)?

Im einfachsten Fall wäre das zB
If InStr(1, Datei.Name, "Bookingsave2011", vbTextCompare) <> 0 Then
oder (um nur solche zu "erwischen", bei denen der Suchbegriff am Anfang des Dateinamens steht)
Suche = LCase("Bookingsave2011")  
...
If LCase(Left(Datei.Name, Len(Suche))) = Suche Then
Beides übrigens ungetestet ...

Grüße
bastla
NeoCrown
NeoCrown 04.10.2011 um 11:47:17 Uhr
Goto Top
Hallo!

Nein ich krieg das nicht hin weil ich keine grosse Ahnung habe von VB Scripts :D
Habe ich vergessen zu erwähnen...

edit:

auf welches Script beziest Du dich überhaupt mit deiner Änderung?

möglicherweise krieg ichs dan hin =)

Grüsse
bastla
bastla 04.10.2011 um 22:05:13 Uhr
Goto Top
Hallo NeoCrown!

Am leichtesten anpassbar sollte diese Version sein:
Set fso = CreateObject("Scripting.FileSystemObject")   
Set WSHShell = WScript.CreateObject("WScript.Shell")   
'On Error Resume Next '## während der Testphase kontraproduktiv ##  

' * hier eigenen Bedürfnissen anpassen *   
strOrdnerliste = "C:\Dokumente und Einstellungen\pweberling\Desktop\Ordnerliste.txt"   
strAusschlussliste = "C:\Dokumente und Einstellungen\pweberling\Desktop\Ausschluss.txt"   
Aufheben = 3 'Anzahl der Tage   
' * Ende der Anpassungen *   

Set objOrdnerliste = fso.OpenTextFile(strOrdnerliste) 
Verzeichnis = Split(objOrdnerliste.ReadAll, vbCrLF) 
objOrdnerliste.Close 
Set objAusschlussliste = fso.OpenTextFile(strAusschlussliste) 
Exclude = "#" & Replace(objAusschlussliste.ReadAll, vbCrLF, "#") & "#"  
objAusschlussliste.Close 

Heute = Date() 

For n = 0 To UBound(Verzeichnis)  
    Set Ordner = fso.GetFolder(Verzeichnis(n)) 
    DeleteInFolder(Ordner) 
Next 

Sub DeleteInFolder(Ordner) 
Set Dateien = Ordner.Files 
' Alle Dateien in diesem Ordner abklappern   
For Each Datei In Dateien 
    If Datei.DateLastModified < (Heute - Aufheben) Then
        'nur Dateien, deren Name nicht wie ein Eintrag der Ausschlussliste endet  
        '(für exakte Übereinstimmung - außer Groß-/Kleinschreibung - wäre  
        '"#" & Datei.Name & "#"  
        'zu verwenden)  
        If InStr(1, Exclude, Datei.Name & "#", vbTextCompare) = 0 Then  
            On Error Resume Next
            WScript.Echo "-" &Datei.DateLastModified&" "&Datei.Path 'Datei.Delete  
            If Err And Err <> 70 Then MsgBox "Unerwarteter Fehler (Code=" & Err & ")", vbCritical: WScript.Quit   
            On Error Goto 0 
        End If 
    End If 
Next

'Unterordner abklappern, DeleteInFolder rekursiv aufrufen   
For Each Unter In Ordner.SubFolders
    'nur Ordner, deren Name nicht wie ein Eintrag der Ausschlussliste endet  
    If InStr(1, Exclude, Unter.Name & "#", vbTextCompare) = 0 Then   
        DeleteInFolder(Unter)
        If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then WScript.Echo "--"&Unter.Path 'Unter.Delete  
    End If
Next 
End Sub
Grüße
bastla
Biber
Biber 15.10.2011 um 16:21:02 Uhr
Goto Top
Moin NeoCrown,

Nachfrage: gibt es denn noch irgendwelche Bewegungen in diesem Beitrag oder kann ich den entsorgen?

Grüße
Biber