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-Key: 174063

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

Printed on: April 19, 2024 at 12:04 o'clock

Member: bastla
bastla Oct 03, 2011, updated at Oct 18, 2012 at 16:48:39 (UTC)
Goto Top
Hallo NeoCrown und willkommen im Forum!

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

Grüße
bastla
Member: NeoCrown
NeoCrown Oct 04, 2011 at 06:49:50 (UTC)
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
Member: bastla
bastla Oct 04, 2011 at 07:24:13 (UTC)
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
Member: NeoCrown
NeoCrown Oct 04, 2011 at 09:47:17 (UTC)
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
Member: bastla
bastla Oct 04, 2011 at 20:05:13 (UTC)
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
Member: Biber
Biber Oct 15, 2011 at 14:21:02 (UTC)
Goto Top
Moin NeoCrown,

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

Grüße
Biber