Script zum Löschen Dateien äter X aber nicht im Unterordner XY
Hallo ich habe das unten stehende Script zum Löschen von Dateien die älter 10 Tage sind, soweit läuft es.
Nun habe ich folgendes Problem:
durch die Einbindung SUCHE_IN_UNTERORDNERN = True werden auch die Unterordner bei der Suche Eingebunden, das ist auch so gewünscht.
Nun habe ich in einen bestimmten Unterordner (Apfel) in dem sich Dateien (Name enthält immer das Wort Musik) befinden die nicht gelöscht werden sollen, diese werden aber gelöscht.
Wie kann ich das verhindern?
Nun habe ich folgendes Problem:
durch die Einbindung SUCHE_IN_UNTERORDNERN = True werden auch die Unterordner bei der Suche Eingebunden, das ist auch so gewünscht.
Nun habe ich in einen bestimmten Unterordner (Apfel) in dem sich Dateien (Name enthält immer das Wort Musik) befinden die nicht gelöscht werden sollen, diese werden aber gelöscht.
Wie kann ich das verhindern?
Set shell = WScript.CreateObject("WScript.Shell")
answer=MsgBox("Starte mit der Funktion: Lösche Inhalte im Ordner Test die älter 10 Tage sind", vbYesNo,"Frage")
if answer = vbyes then
CreateObject("WScript.Shell").Popup "Starte mit der Löschung",3, "Information"
DEINORDNER = "D:\Test"
SUCHE_IN_UNTERORDNERN = True
olddate = DateAdd("d", -10, Date)
set objFS = CreateObject("Scripting.FilesystemObject")
Set objShell = CreateObject("Wscript.Shell")
parseFolders objFS.GetFolder(DEINORDNER)
Function parseFolders(strFldr)
for each myFile in strFldr.Files
If LCase(objFS.GetExtensionName(myFile.Name)) = "lnk" then
target = objShell.CreateShortcut(myFile.Path).TargetPath & "\Birne"
If objFS.FolderExists(target) Then
RemoveOldFiles objFS.GetFolder(target)
End If
End If
Next
For Each subFolder in strFldr.SubFolders
parseFolders subFolder
Next
End Function
Function RemoveOldFiles(strFldr)
For Each f In strFldr.Files
If f.DateLastModified < olddate and not InStr(1,f.Name,"*Musik*") > 0 Then
objFS.DeleteFile f.Path,True
End If
Next
For Each subFolder in strFldr.SubFolders
RemoveOldFiles subFolder
Next
End Function
MsgBox "Fertig mit der Löschung"
else
CreateObject("WScript.Shell").Popup "Abruch, nichts gelöscht",3, "Information"
end if
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 380919
Url: https://administrator.de/contentid/380919
Ausgedruckt am: 25.11.2024 um 04:11 Uhr
7 Kommentare
Neuester Kommentar
Wenn du dir mal eine Referenz zur InStr Funktion angesehen hättest, wüsstest du dass @emeriks Recht hat. Wird der String "Musik" gefunden, dann wird die Position zurückgegeben, an der der erste Buchstabe (also das M) gefunden wurde. Anderenfalls gibt InStr 0 zurück. Keine Ahnung was du mit den Sternchen willst. Du brauchst für diese Funktion keine Wildcards und die Funktion würde sie auch nicht unterstützen.
Steffen
Steffen
Hallo Knuefi,
für das Rotieren von Dateien, denn umsolches handelt es sich hier ja wohl, verwende ich am liebsten die
delage32.exe.
Benutzung:
:: Backup die älter als 2 Tage werden gelöscht
F:\Pfad_zur_delage32_exe\delage32.exe "F:\Ordner\*.*" 2
Wenn das aber ein Powershell Übung werden sollte, dann habe ich nichts gesagt.
grüße vom it-frosch
für das Rotieren von Dateien, denn umsolches handelt es sich hier ja wohl, verwende ich am liebsten die
delage32.exe.
Benutzung:
:: Backup die älter als 2 Tage werden gelöscht
F:\Pfad_zur_delage32_exe\delage32.exe "F:\Ordner\*.*" 2
Wenn das aber ein Powershell Übung werden sollte, dann habe ich nichts gesagt.
grüße vom it-frosch
Hehe, an deinem Stil musst du aber noch ein bisschen feilen. Dein Code ist wegen fehlender Einrückungen fast nicht lesbar. Du hast Funktionen einfach mitten im Hauptcode stehen, ohne dass eine Abgrenzung zu sehen wäre. Du referenzierst das "WScript.Shell" Objekt viermal (wenn ich mich nicht verzählt habe). Und ...
Steffen
durch die Einbindung SUCHE_IN_UNTERORDNERN = True werden auch die Unterordner bei der Suche Eingebunden
... nee, du nutzt diese Variable nirgends in deinem gesamten Code.Steffen