Forum

> > Off Topic > VBScript frage
ForenübersichtOff Topic-ÜbersichtEinloggen, um zu antworten

Deutsch VBScript frage

7 Antworten
Zum Anfang Vorherige 1 Nächste Zum Anfang

alt VBScript frage

Gast

Zitieren
Ich beschäftige mich gerade mit VBS und versuche mich ein bisschen. Nun meine frage:

Ist es möglich, dass ich im script hin und herspringen kann?
zum Beispiel in dem Nachfolgenden möchte ich eine Datei öffnen aber wenn man abrechen klickt soll nachgefragt werden ob man noch etwas anderes tun möchte und wenn ja dann soll es von vorne beginnen. Hier der Script:

Eingabe=InputBox("Welche Datei soll ausgeführt werden? Bitte geben sie den Pfad in Anführungszeichen ein. (Wenn der Pfad ein Leerzeichen verwendet dann müssen drei Anführungszeichen vor und nach dem Pfad stehen.)!")
if Eingabe="" Then MsgBox"... dann halt nicht!"
if Eingabe="" Then Ask=MsgBox ("Möchtest du noch etwas anderes Tun?", 4)
if Ask<>VBNo Then MsgBox"Und von vorne..."
if Ask<>VBYes Then WScript.Quit
if Eingabe<>"" Then Set WSHShell=WScript.CreateObject("WScript.Shell")
If Eingabe<>"" Then WSHShell.Run Eingabe

Hat jemand eine Ahnung ob es möglich ist?

Freue mich auf eure antworten und bedanke mich schonmal dafür!!!

DANKE

alt Re: VBScript frage

jeepohahyo
User Off Offline

Zitieren
Das packt man alles in eine Endlosschleife.
Dann sagt man der Schleife mit dem VBS-Pendant zum C-Befehl continue; dass die Schleife von vorne beginnen soll.

Beim Beenden springt man mit break; oder was auch immer aus der Schleife raus und beendet danach das Programm.

Das mit dem Springen ist verpönt, Spaghetticode ist schlecht zu verstehen.
Ich kann leider kein Beispiel schreiben, da ich kein VBS kann, aber so müsste es laufen.

alt Re

Darth Shannon
User Off Offline

Zitieren
Allgemein:

Wäre ganz sinnvoll, im Zusammenhang mit MsgBox Konstanten anstelle des Zahlenwertes zu verwenden, dann wüsste ein Außenstehender auch, was die Anweisung bedeutet.

1
2
if Eingabe<>"" Then Set WSHShell=WScript.CreateObject("WScript.Shell") 
If Eingabe<>"" Then WSHShell.Run Eingabe

Zweimal die gleiche If-Abfrage ist unsinnig.

1
2
3
4
IF Not Eingabe = VBNullString Then
    Set WSHShell=WScript.CreateObject("WScript.Shell")
    WSHShell.Run Eingabe
End If

Zitat
Dann sagt man der Schleife mit dem VBS-Pendant zum C-Befehl continue; dass die Schleife von vorne beginnen soll.


VBS unterstützt kein Pendant zu continue, also doch Sprungmarken.

1
2
3
4
5
beginning:
(...)
Anweisungen
(...)
if MsgBox("Bla", VBYesNo) = VBYes Then goto beginning

alt Re: VBScript frage

jeepohahyo
User Off Offline

Zitieren
Was? Kein break und continue? Ich dachte das hat jede Sprache (außer BASIC )
Mäh, das kommt davon, wenn man keine Ahnung hat und versucht zu helfen, naja das Gegenteil von gut ist gut gemeint

alt Re: VBScript frage

bizzl
User Off Offline

Zitieren
Dicker hat geschrieben
Was? Kein break und continue? Ich dachte das hat jede Sprache (außer BASIC )

VBS ist ja auch Basic (Visual Basic Script)

alt Re: VBScript frage

jeepohahyo
User Off Offline

Zitieren
Joa, ist BB auch, das kann aber auch Schleifen und was so dazugehört (glaube ich, soweit ich mich ans Stevens Tut erinnere ).
Ist ja aber auch egal jetzt,d as Problem ist ja gelöst

alt Re: VBScript frage

Gast

Zitieren
Danke erstmal für die vieen hilfen (auch den gut gemeinten) !
Ich hab aber ein Problem mit dem setzten einer Sprungmarkte!

Wenn ich das so schreibe wie Darth Shannon erklärt kar, dann sagt der PC mir dass da ne anweisung erwartet wird!

Hat dafür jemand ne ERklärung?

Danke.

alt Hm

Darth Shannon
User Off Offline

Zitieren
Bei mir tritt der selbe Fehler auf, sieht so aus unterstütze VBS die Sprungmarken, die ich als alter Visual Basic Programmierer vorausgesetzt habe, doch nicht.

In diesem Falle muss wohl eine Schleife herhalten, die leider alles komplizierter macht (der Abbruch ist nach Basic-Syntax möglich, lediglich die continue-Funktion ist nicht Basic-Standard, auch wenn sie Bestandteil einiger Dialekte, etwa VB.net ist).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim Eingabe

DO

Eingabe = InputBox("Welche Datei soll ausgeführt werden? Bitte geben sie den Pfad in Anführungszeichen ein. (Wenn der Pfad ein Leerzeichen verwendet dann müssen drei Anführungszeichen vor und nach dem Pfad stehen.)!")

IF Eingabe = VBNullString THEN
	MsgBox   "... dann halt nicht!"
	IF MsgBox("Möchtest du noch etwas anderes tun?", VBYesNo) = VBYes THEN
		MsgBox "Und von worne..."		
	ELSE
		WScript.Quit
	END IF
ELSE: EXIT DO
END IF

LOOP

Dim WSHShell
set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run Eingabe
Zum Anfang Vorherige 1 Nächste Zum Anfang
Einloggen, um zu antwortenOff Topic-ÜbersichtForenübersicht