Einzelnen Beitrag anzeigen
Alt 05.06.2008, 15:46   #5 (permalink)
Exit
Blödmarktkundenberater
 
Benutzerbild von Exit
 

Registriert seit: 10.04.2002
Beiträge: 10.667

Exit hat eine strahlende Zukunft
Exit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende Zukunft

Standard AW: [VBS]Fehlerbehandlung

So ich habe jetzt mal folgendes getestet:

Code:
On Error Resume Next
  
If 1 <> 0 then
 
    a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")
 
    if a=vbYes then 
        Set oShellA = WScript.CreateObject("WScript.Shell") 
        oShellA.Run "C:Test.bat",1,True 
    End If
    
    x=MsgBox("Nach a vbYes! a=" & a & ", vb=" & vbNo, vbYesNo)
     
    if a=vbNo then 
       Set oShellB = WScript.CreateObject("WScript.Shell") 
       oShellB.Run "C:Test2.bat",1,True
    End If
 
End If
Und das funktionierte auch.

Existiert bei Dir die Datei "Test2.bat" auch? Weil die "2" hatte ich am Ende übersehen - und mich auch schon die ganze Zeit gewundert warum es so aussah, als ob es nicht funktionieren würde. Weil es kommt ja auch kein direkter Fehler.

Folgendes habe ich auch noch getestet - und mit ein bisschen spielen auch Deinen Fehler gefunden:

Code:
On Error Resume Next
 
 
If 1 <> 0 then
 
    a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")
 
    if a=vbYes then 
        Set oShellA = WScript.CreateObject("WScript.Shell") 
        oShellA.Run "C:Test.bat",1,True 
    else 
        Set oShellB = WScript.CreateObject("WScript.Shell") 
       oShellB.Run "C:Test2.bat",1,True
    End If
 
End If
Dein Fehler ist, dass Du direkt hinter dem "Then" eine Anweisung schreibst!

Damit wird kein "End IF" vom Compiler erwartet - und wenn da eins kommt, dann meckert er. Wenn Du also mehrere Anweisung in einem IF Zweig ausführen möchtest, dann musst Du die Anweisung auf die nächste Zeile schreiben und per "End If" bzw. "Else" (usw.) behandeln.

Ich habe es nicht gleich gesehen, da ich VBS schon lange net mehr gemacht habe, und somit seine Eigenheiten auch nicht mehr im Kopf habe

Bitte Schreib es so:


falsch:
Code:
if a=vbYes then Set oShell = WScript.CreateObject("WScript.Shell") 
...
richtig:
Code:
if a=vbYes then 
     Set oShell = WScript.CreateObject("WScript.Shell") 
     ...
Die Einrückung ist nicht notwendig - aber hilfreich um die Übersicht zu behalten - also gewöhn Dich am besten dran sowas zu machen
Power is nothing without Control!
Hauptsystem

Geändert von Exit (05.06.2008 um 15:55 Uhr)
Exit ist offline   Mit Zitat antworten