TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04.06.2008, 12:20   #1 (permalink)
Hardware Freak
 
Benutzerbild von Killerpixel
 

Registriert seit: 01.01.2007
Beiträge: 11.501

Killerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz sein

Standard [VBS]Fehlerbehandlung

Mal was ganz neues heute...

Ich sitz hier grade vor nem VBScript, welches ein Netzlaufwerk verbindet, schön und gut, das funktioniert auch so weit. Jetzt muss das ganze allerdings so gebastelt werden, dass bei einem Verbindungsfehler ein Ja/Nein-Error erscheint. Beim Klick auf ja soll sich eine .bat mit einem Sicherungsskript öffnen, bei Klick auf nein soll eine .bat mit einem shutdown-Skript gestartet werden.

Code:
On Error Resume Next
 
Set wn = WScript.CreateObject("WScript.Network")
wn.MapNetworkDrive "o:", "\snaptemp", False
 
If Err.Number = -2147024843 then
 
a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk 
nicht erreichbar")
 
if a=vbYes then Set oShell = WScript.CreateObject("WScript.Shell") 
oShell.Run "C:Test.bat",1,True 
 
if a=vbNo then Set oShell = WScript.CreateObject("WScript.Shell") 
oShell.Run "C:Test2.bat",1,True
 
End If
Das funktioniert im Großen und Ganzen schon ganz gut, das einzige Problem ist, dass sich bei einem Klick auf Ja beide Batches (in dem Fall Test und Test2) öffnen.....und ein shutdown während der Datensicherung ist eher schlecht.

Entweder da is jetz wirklich irgendein grober Fehler drin, oder ich steh aufm Schlauch, jedenfalls wäre es gut, wenn mir jemand verraten kann, wie ich das Problem beseitige.

Thx und LG

€: Man merkt vielleicht dass ich auf dem Gebiet nicht so der Profi bin, also bitte nich hauen wenn das ganze Ding Schei$e is, bin froh dass es jetz so funktioniert.
Das Motto der Minensucher: Wer suchet, der findet. Wer drauftritt verschwindet.


Geändert von Killerpixel (04.06.2008 um 12:31 Uhr)
Killerpixel ist offline   Mit Zitat antworten
Alt 04.06.2008, 15:57   #2 (permalink)
Blödmarktkundenberater
 
Benutzerbild von Exit
 

Registriert seit: 10.04.2002
Beiträge: 10.643

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

Code:
On Error Resume Next
 
Set wn = WScript.CreateObject("WScript.Network")
wn.MapNetworkDrive "o:", "snaptemp", False
 
If Err.Number = -2147024843 then
 
a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk 
nicht erreichbar")
 
if a=vbYes then 
    Set oShell = WScript.CreateObject("WScript.Shell") 
    oShell.Run "C:Test.bat",1,True 
End If
 
if a=vbNo then 
   Set oShell = WScript.CreateObject("WScript.Shell") 
   oShell.Run "C:Test2.bat",1,True
End If
 
End If
So sollte es gehen! Du hast einfach vergessen, dass man die Kurzschreibweise der IF Anweisung nur dann ohne End If lassen darf, wenn nur eine Anweisung danach kommt! Und da Du jeweils 2 hast, welche unter die Bedingung fallen werden diese logischerweise gleich ausgeführt.

Falls vbYesNo kein Cancel Button (oder ein X zu schließen der Message hat, kannst Du auch gleich mit Else arbeiten. (weiß ich jetzt nicht genau)

Siehe hier: asphelper.de - VBScript - If...Then...Else
Power is nothing without Control!
Hauptsystem
Exit ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
Killerpixel (04.06.2008)
Alt 04.06.2008, 16:03   #3 (permalink)
Hardware Freak
 
Benutzerbild von Killerpixel
 

Registriert seit: 01.01.2007
Beiträge: 11.501

Killerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz sein

Standard AW: [VBS]Fehlerbehandlung

Alles klar, werd ich dann morgen ausprobieren und hier Rückmeldung geben, Danke dir.

Else funktioniert übrigens nicht. (zumindest nich wie ich es ausprobiert hab :>)
Killerpixel ist offline   Mit Zitat antworten
Alt 05.06.2008, 08:19   #4 (permalink)
Hardware Freak
 
Benutzerbild von Killerpixel
 

Registriert seit: 01.01.2007
Beiträge: 11.501

Killerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz sein

Standard AW: [VBS]Fehlerbehandlung

Hmm..klappt leider auch nicht, er bringt mir dann ne Fehler, dass er bei dem vorletzten End If ne Anweisung erwartet....

Wenn ich die zweite batch mit else aufrufen will klappt das gar nicht.

Also so:

Code:
On Error Resume Next
 
Set wn = WScript.CreateObject("WScript.Network")
wn.MapNetworkDrive "o:", "snap2temp", False
 
If Err.Number = -2147024843 then
 
a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")
 
if a=vbYes then Set oShell = WScript.CreateObject("WScript.Shell") 
oShell.Run "C:Test.bat",1,True 
 
else Set oShell = WScript.CreateObject("WScript.Shell") 
oShell.Run "C:Test2.bat",1,True
End If
Killerpixel ist offline   Mit Zitat antworten
Alt 05.06.2008, 15:46   #5 (permalink)
Blödmarktkundenberater
 
Benutzerbild von Exit
 

Registriert seit: 10.04.2002
Beiträge: 10.643

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

Geändert von Exit (05.06.2008 um 15:55 Uhr)
Exit ist offline   Mit Zitat antworten
Alt 05.06.2008, 15:55   #6 (permalink)
Hardware Freak
 
Benutzerbild von Killerpixel
 

Registriert seit: 01.01.2007
Beiträge: 11.501

Killerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz sein

Standard AW: [VBS]Fehlerbehandlung

Alles klar, werd mir das fürs nächste Skript mal im Hinterkopf behalten.

Beim aktuellen wurde nun die Anforderung vom Cheftechniker geändert. -.-

Das ganze sieht jetz so aus:

Code:
On Error Resume Next

rem <<- Netzlaufwerk verbinden ->>
 
Set wn = WScript.CreateObject("WScript.Network")
wn.MapNetworkDrive "o:", "\snaptemp", False

rem <<- Überprüfung, ob Ziellaufwerk erreichbar ist ->>
 
If Err.Number = -2147024843 then
 
    a=MsgBox("Ist der Netzwerkfehler behebbar?", vbCritical + vbYesNo, "Netzlaufwerk nicht erreichbar")

    if a=vbYes then 
    Set oShell = WScript.CreateObject("WScript.Shell") 
    oShell.Run "C:Test.bat",1,True 

    if a=vbNo then 
    WScript.Quit

End If

rem On Error Resume Next

rem <<- Überprüfung, ob Laufwerk bereits benutzt wird. ->>

If Err.Number = -2147024811 then
    
    a=msgbox("Laufwerk wird bereits benutzt, bitte Problem beheben und Programm neustarten.", vbCritical + vbOKOnly, "Ziellaufwerk wird bereits benutzt")

    if a=vbOk then WScript.Quit


End If


rem On Error Resume Next

rem <<- Überprüfung, ob Netzwerk verfügbar ist ->>
 
If Err.Number = -2147023665 then

    a=msgbox("Netzwerk nicht verfügbar, bitte Problem beheben und Programm erneut starten", vbCritical + vbOKOnly, "Netzwerk nicht bereit")

    if a=vbOk then WScript.Quit

End if

rem <<- Start des Sicherungsskripts ->>

Set oShell = WScript.CreateObject("WScript.Shell") 
oShell.Run "C:Test.bat",1,True
Und wurde als okay abgenickt.

Was man als Praktikant nich alles zu tun bekommt, wenn im Laden nix los is.^^

Danke dir jedenfalls Exit!
Killerpixel ist offline   Mit Zitat antworten
Alt 07.06.2008, 15:46   #7 (permalink)
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 

Registriert seit: 12.09.2005
Beiträge: 2.922

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: [VBS]Fehlerbehandlung

Einen Einwand hätte ich noch,
muss man in VB nicht am Ende der Zeile einen Unterstrich (_) setzen, wenn der Befehl auf der nächsten Zeile weitergeht?
War mein Post nützlich für dich? Ein Danke oder eine Bewertung sind immer schön.
Teilnehmer der Initiative "User verbessern Qualität im Forum" | Meine Systeme

Darf ich mal bitte vorbei?! Das geht nach Kompetenz... Danke! | | | Einmal dachte ich, ich hätte Unrecht. Hab mich aber getäuscht!
"Es ist gelogen, dass Videogames Kids beeinflussen. Hätte Pacman das getan, würden wir heute durch dunkle Räume irren, Pillen fressen und elektronische Musik hören."

[EID]-Mr.GiZMO ist offline   Mit Zitat antworten
Alt 07.06.2008, 15:55   #8 (permalink)
Hardware Freak
 
Benutzerbild von Killerpixel
 

Registriert seit: 01.01.2007
Beiträge: 11.501

Killerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz seinKillerpixel kann auf vieles stolz sein

Standard AW: [VBS]Fehlerbehandlung

Zitat:
Zitat von [EID]-Mr.GiZMO Beitrag anzeigen
Einen Einwand hätte ich noch,
muss man in VB nicht am Ende der Zeile einen Unterstrich (_) setzen, wenn der Befehl auf der nächsten Zeile weitergeht?
Also es hat so wie es ist auf jeden Fall funktioniert, scheint also nicht so zu sein.
Killerpixel ist offline   Mit Zitat antworten
Antwort

Stichworte
vbsfehlerbehandlung


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.




Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2022, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved