admin1987
Goto Top

VB Script löscht Dateien Dateimaske fehlt noch

Hallo!

Ich habe dieses VBS Script
und möchte zusätzlich das nur Dateien gelöscht werden die die Endung .bak oder .sav haben.

Kann mir da jemand auf die Sprünge helfen?

Danke und LG chris

SCRIPT:


Set myArguments = WScript.Arguments

If myArguments.Count <> 1 Then
call DisplayInfo
Wscript.Quit (1)
End if

Dim heute, olddate
heute = FormatDateTime(Date, 2)
olddate = DateAdd("d", -30, heute)

set objFS = CreateObject("Scripting.FilesystemObject")
set myFolder = objFS.GetFolder(myArguments(0))
set myFiles = myFolder.Files

for each myfile in myFiles
If myFile.DateCreated < olddate then
myFile.Delete
end if
next

Sub DisplayInfo
MsgBox "Usage: deleteoldfiles.vbs [FolderPath]", vbExclamation, "Missing Argument"
End Sub

Content-Key: 81974

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: gemini
gemini Feb 29, 2008 at 13:52:54 (UTC)
Goto Top
Hallo admin1987,

habs jetzt nicht ausprobiert, sollte aber schon funktionieren.

Set myArguments = WScript.Arguments
If myArguments.Count <> 1 Then 
call DisplayInfo
Wscript.Quit (1)
End if

Dim heute, olddate, strExt, arExt
heute = FormatDateTime(Date, 2)
olddate = DateAdd("d", -30, heute)  
strExt = "bak,sav"  

set objFS = CreateObject("Scripting.FilesystemObject")  
set myFolder = objFS.GetFolder(myArguments(0))
set myFiles = myFolder.Files

for each myfile in myFiles
arExt = Split(LCase(strExt), ",", -1, 1)  
  For i = 0 To UBound(arExt)
    If LCase(Right(myfile, 3)) = arExt(i) Then
      If myFile.DateCreated < olddate then
      myFile.Delete
      end if
    End If
  Next
next 

Sub DisplayInfo
MsgBox "Usage: deleteoldfiles.vbs [FolderPath]", vbExclamation, "Missing Argument"  
End Sub

Gruß,
gemini
Member: bastla
bastla Feb 29, 2008 at 14:00:29 (UTC)
Goto Top
Hallo Admin1987!

Versuch es damit:
Set myArguments = WScript.Arguments

If myArguments.Count <> 1 Then
call DisplayInfo
Wscript.Quit (1)
End if

Dim heute, olddate
heute = FormatDateTime(Date, 2)
olddate = DateAdd("d", -30, Date)  
maske = "#bak#sav#"  

set objFS = CreateObject("Scripting.FilesystemObject")  
set myFolder = objFS.GetFolder(myArguments(0))
set myFiles = myFolder.Files

for each myfile in myFiles
If myFile.DateCreated < olddate then
	If InStr(1, maske, "#" & objFS.GetExtensionName(myFile.Path) & "#", vbTextCompare) Then  
		myFile.Delete
	End If
end if
next

Sub DisplayInfo
MsgBox "Usage: deleteoldfiles.vbs [FolderPath]", vbExclamation, "Missing Argument"  
End Sub

Da in der Variablen "maske" nach einem Teilstring "#Typ#" gesucht wird, muss sowohl vor, als auch nach jedem Dateityp "#" verwendet werden.

Grüße
bastla
Member: bastla
bastla Feb 29, 2008 at 20:29:38 (UTC)
Goto Top
@gemini

Kurze Anmerkung: Das Array für die Extensions könntest Du eigentlich schon vor der Schleife und auch auf direktem Weg erzeugen (ob der Unterschied in der Laufzeit aber überhaupt messbar ist, wäre zu testen):
arExt = Array("bak","sav")  

Grüße
bastla
Member: admin1987
admin1987 Mar 04, 2008 at 07:18:47 (UTC)
Goto Top
Guten Morgen!

Ja super habe es gerade integriert, genau das was ich suche-
VIELEN VIELEN DANK!!!

lg chris