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
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
6 Antworten
- LÖSUNG bastla schreibt am 03.10.2011 um 17:59:36 Uhr
- LÖSUNG NeoCrown schreibt am 04.10.2011 um 08:49:50 Uhr
- LÖSUNG bastla schreibt am 04.10.2011 um 09:24:13 Uhr
- LÖSUNG NeoCrown schreibt am 04.10.2011 um 11:47:17 Uhr
- LÖSUNG bastla schreibt am 04.10.2011 um 22:05:13 Uhr
- LÖSUNG NeoCrown schreibt am 04.10.2011 um 11:47:17 Uhr
- LÖSUNG bastla schreibt am 04.10.2011 um 09:24:13 Uhr
- LÖSUNG NeoCrown schreibt am 04.10.2011 um 08:49:50 Uhr
- LÖSUNG Biber schreibt am 15.10.2011 um 16:21:02 Uhr
LÖSUNG 03.10.2011, aktualisiert 18.10.2012
Hallo NeoCrown und willkommen im Forum!
ZB: https://www.administrator.de/forum/l%c3%b6schen-von-alten-dateien-und-ve ...
Grüße
bastla
ZB: https://www.administrator.de/forum/l%c3%b6schen-von-alten-dateien-und-ve ...
Grüße
bastla
LÖSUNG 04.10.2011 um 08:49 Uhr
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
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
LÖSUNG 04.10.2011 um 09:24 Uhr
Hallo NeoCrown!
Und die Umkehrung von
bekommst Du nicht selbst hin (Du hattest ja nur nach einem Beispiel gefragt)?
Im einfachsten Fall wäre das zB
oder (um nur solche zu "erwischen", bei denen der Suchbegriff am Anfang des Dateinamens steht)
Beides übrigens ungetestet ...
Grüße
bastla
Und die Umkehrung von
If InStr(1, Exclude, Datei.Name & "#", vbTextCompare) = 0 Then
Im einfachsten Fall wäre das zB
If InStr(1, Datei.Name, "Bookingsave2011", vbTextCompare) <> 0 Then
Suche = LCase("Bookingsave2011")
...
If LCase(Left(Datei.Name, Len(Suche))) = Suche Then
Grüße
bastla
LÖSUNG 04.10.2011 um 11:47 Uhr
LÖSUNG 04.10.2011 um 22:05 Uhr
Hallo NeoCrown!
Am leichtesten anpassbar sollte diese Version sein:
Grüße
bastla
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
bastla
LÖSUNG 15.10.2011 um 16:21 Uhr