Forum

> > Off Topic > VBScript frage
Forums overviewOff Topic overviewLog in to reply

German VBScript frage

7 replies
To the start Previous 1 Next To the start

old VBScript frage

Guest

Quote
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

old Re: VBScript frage

jeepohahyo
User Off Offline

Quote
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.

old Re

Darth Shannon
User Off Offline

Quote
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

Quote
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

old Re: VBScript frage

jeepohahyo
User Off Offline

Quote
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

old Re: VBScript frage

bizzl
User Off Offline

Quote
Dicker has written
Was? Kein break und continue? Ich dachte das hat jede Sprache (außer BASIC )

VBS ist ja auch Basic (Visual Basic Script)

old Re: VBScript frage

jeepohahyo
User Off Offline

Quote
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

old Re: VBScript frage

Guest

Quote
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.

old Hm

Darth Shannon
User Off Offline

Quote
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
To the start Previous 1 Next To the start
Log in to replyOff Topic overviewForums overview