gansterjo2
Goto Top

VBS Error Handling Funktioniert nicht, wie Gewünscht

Hallo Zusammen

Ich musste ein Script erstellen, welches Daten ausserhalb einer dynamischen Zeitspanne löscht.

Dieses erweiterte ich mit einer E-Mail Benachrichtigung, sobald ein Fehler entsteht.

Beim Test bekam ich nur eine Nachricht, wenn ich nicht alle Werte eingegeben hatte.

Da meine Vermutung beim Error Handling liegt bin ich ein wenig Ratlos, denn ich habe das Gleiche schon mit einem 'Goto'-Befehl ausprobiert...

Nun noch der Code:

'===============  
' Error Handler  
'===============  
On Error Resume Next

'==============  
' Werte Setzen  
'==============  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objMessage = CreateObject("CDO.Message")  

' Werte für E-Mail setzen  
'-------------------------  
Set objMessage = CreateObject("CDO.Message")   
objMessage.Subject = "Error on Script loeschen_x-x.vbs"  
objMessage.From = "errorman@loeschen.ch"   
objMessage.To = "Gansterjo2@hispeed.ch"   
objMessage.Textbody = "Es hat einen Fehler im Script gegeben bitte schauen Sie beiligendes Logscript an..."  

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2   
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "YYY.YYY.YYY.YYY"  
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25    
objMessage.Configuration.Fields.Update

'=============  
' Main Script  
'=============  

if WScript.Arguments.Count = 2 Then
	strOrdner = WScript.Arguments.item(0)
	intTage = CInt(WScript.Arguments.item(1))
else
    objMessage.Textbody = "loeschen_Wichtig.vbs Verzeichnis AnzahlTage"  
	objMessage.send
	msgbox ("Syntax: loeschen_Wichtig.vbs Verzeichnis AnzahlTage")  
end if

Set objOrdner = objFSO.GetFolder(strOrdner)
intZahl = 0 'Die Variable wird auf 0 gesetzt  
For Each objDatei In objOrdner.Files 'For Each Schleife, die jeden Ordner im Verzeichnis analysiert.  
	diff = DateDiff("d", objDatei.DateCreated, Now)  
    If LCase(objFSO.GetExtensionName(objDatei.name)) = "xyz" Then  
        if diff > intTage Then
			objDatei.Delete
			intZahl = intZahl + 1
		End If
	End if
Next

For Each objUnterordner In objOrdner.SubFolders
	diff = DateDiff("d", objUnterordner.DateCreated, Now)  
    Doku = Doku & vbCrLf & DateDiff("d", objUnterordner.DateCreated, Now) & vbTab & objUnterordner.Name  
	If diff > intTage Then
		objUnterordner.Delete
        intOrdner = intOrdner + 1
	End If  
Next   

'WScript.Echo Mid(Doku, 3)  

wscript.quit

'=================  
' Error Handler 2  
'==================  
if Err.Number <> 0 then
 objMessage.send
end if

Habt Ihr vielleicht eine Idee, wie ich das Problem lösen kann?


Vielen Dank für eure Antwort

Freundliche Grüsse


Gansterjo2

Content-Key: 206297

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

Printed on: April 23, 2024 at 16:04 o'clock

Member: rubberman
rubberman May 10, 2013 at 14:18:59 (UTC)
Goto Top
Hallo Gansterjo2,

Zeile 64 beendet dein Script. Alles was danach kommt wird nie gesehen face-wink

Diese Zeile kannst du gefahrlos löschen. Das Script wird auch ohne Quit beendet wenn das Ende des Codes erreicht wird.

Grüße
rubberman
Member: Gansterjo2
Gansterjo2 May 10, 2013 at 14:23:00 (UTC)
Goto Top
Hallo rubberman

Ich Dummerchen hab es von den Experimenten noch gelassen... Vielen Dank für den Hinweis...

Grüsse

Gansterjo2