Willkommen im PC-Welt-Forum
Liebe Leser,
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Ergebnis 1 bis 9 von 14
Thema: VBS Befehle Verknüpfen?
-
01.04.2010, 11:18 #1
Gesperrt
- Registriert seit
- 01.2010
- Beiträge
- 19
VBS Befehle Verknüpfen?
Hallo
mal eine (vielleicht dumme) Frage, aber wie kann ich in VBS Befehle miteinander verknüpfen?
In Batch macht man das ja mit &, doch in VBS funktioniert das nicht.
Danke schon im Voraus
spook93
-
01.04.2010, 11:36 #2
Irgendwie steh ich gerade auf der Leitung. Kannst du mal ein Beispiel geben was du genau machen willst ?
*Kopfkratz* Befehle verknüpfen ? Oder meinst du Zeichenketten verknüpfen ? Denn Theoretisch (je nach dem was du vor hast,) geht das mit dem und Zeichen.
Hier mal ein einfaches Beispiel
Code:DIM teil1, teil2 teil1 = "den ersten teil" teil2 = "dem zweiten Teil" MsgBox "Ich verknüpfe hier bequem durch das und Zeichen " & teil1 & " mit " & teil2
MfG VB-Coder
-
01.04.2010, 11:50 #3
Gesperrt
- Registriert seit
- 01.2010
- Beiträge
- 19
Ja genau sowas hab ich gesucht!
Will mit einer Inputbox eine Abfrage mit 2 möglichen Antworten durchführen, die Antworten als Variable setzen und diese dann ausgeben.
Soweit war ich schon, bloß dein code hat mir noch gefehlt
Vielen Dank!
Und noch eine Frage: Gibt es in VBS auch 'nen GoTo - Befehl (Sprungmarke) ?
In VB geht das aber in VBS sagt er mir immer "Anweisung erwartet"
-
01.04.2010, 15:26 #4
GoTo gibt es in VBS nicht.
Wenn du sagst was du vor hast kann ich dir eventuell ne Alternative nennen.MfG VB-Coder
-
01.04.2010, 15:57 #5
Gesperrt
- Registriert seit
- 01.2010
- Beiträge
- 19
am besten ich poste mal mein ganzes werk

das wird bestimmt für einen Profi ziemlich durcheinander aussehen, doch ich fange ja auch gerade erst an
Code:on error resume next dim account, passwort, fso, File, sText Const ForWriting = 2 set wshell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set filesys = CreateObject("Scripting.FileSystemObject") Auswahl = Inputbox("Was Wollen Sie tun?" _ & vbCrLf & "1 = Einen Account anlegen" _ & vbCrLf & "2 = Einen Angelegten Account löschen" _ & vbCrLf & "3 = Hife", "AccountCreator v1.0", "") If Auswahl = 1 Then computername = WShell.ExpandEnvironmentStrings("%computername%") if filesys.FolderExists("\\" & computername & "\Admin$\System32") then wshell.popup "Du bist Administrator! Das Programm wird fortgesetzt...",5,"Fenster schließt in 5 Sekunden" else wshell.popup "Du bist NICHT Administrator! Das Programm wird beendet...",5,"Fenster schließt in 5 Sekunden" wscript.quit end if Do account = inputbox ("Bitte geben Sie den Benutzernamen Ihres neuen Accounts ein!","Name?","Admin") if account.text = "" then msgbox "Sie müssen einen Benutzernamen eingeben!",vbOkOnly + vbCritical,"Fehler" Loop While account end if next Do passwort = inputbox ("Bitte geben Sie das Passwort Ihres neuen Accounts ein!","Passwort?","password") if password.text = "" then msgbox "Wollen Sie wirklich kein Passwort vergeben?",vbYesNo + vbQuestion,"Frage" end if next if vbYes then wshell.popup "Wird gespeichert...",5,"Fenster schließt in 5 Sekunden" else Loop While passwort end if next msgbox "Ihre Anmeldedaten lauten: """&account&""" ""und"" """&passwort&"""",64,"Ihre Anmeldedaten" set File1 = fso.OpenTextFile("acc.tmp", ForWriting, true) sText1 = ""&account&"" File1.WriteLine(sText1) File1.Close set File2 = fso.OpenTextFile("pass.tmp", ForWriting, true) sText2 = ""&pass&"" File2.WriteLine(sText2) File2.Close wshell.run "UserAdd.bat", 0, True wshell.popup "Wird gespeichert...",5,"Fenster schließt in 5 Sekunden" fso.GetFile("UserAdd.bat").Delete msgbox "Der Account wurde erfolgreich angelegt",64,"Fertig!" Else If Auswahl = 2 Then Do account = inputbox ("Bitte geben Sie den Benutzernamen Ihres angelegten Accounts ein!","Name?","Admin") if account.text = "" then msgbox "Sie müssen einen Benutzernamen eingeben!",vbOkOnly + vbCritical,"Fehler" Loop While account end if next set File1 = fso.OpenTextFile("acc.tmp", ForWriting, true) sText1 = ""&account&"" File1.WriteLine(sText1) File1.Close wshell.run "DeleteUser.bat", 0, True wshell.popup "Wird gespeichert...",5,"Fenster schließt in 5 Sekunden" fso.GetFile("DeleteUser.bat").Delete msgbox "Der Account wurde erfolgreich gelöscht",64,"Fertig!" Else If Auswahl = 3 Then wshell.run "readme.txt" End If End If End If
Leider sind da noch ein paar Fehler drinn.
Hab bei Google inzwischen die Do-Loop-Methode gefunden, doch ich erhalte ständig den Fehler "do ohne loop"
-
02.04.2010, 03:18 #6
Megabyte
- Registriert seit
- 06.2006
- Beiträge
- 1.907
Hallo Spook
Ich habe nicht geschaut, ob Dein Code allenfalls funktionieren könnte, zuerst musst Du darin für logische Ordnung sorgen >>>
Du hast Code-Teile an verschiedenen Orten gesammelt.
Das ist der normale Weg, man muss das Rad nicht immer wieder neu erfinden wollen...
...aber man muss dann diese Teile, die ja kleine eigene Progrämmchen sind, zusammenhalten, sonst ergeben sie keinen Sinn.
Dazu müssen bei mehrschichtigen Codes die einzelnen Schichten mit Tabulator geschrieben werden. Dem Script-Interpreter ist das egal, aber Dir nicht > DEIN Gedächtnis ist nicht so gut wie seines.
Nur so kannst Du sofort sehen, ob alle Do/Loop-Schleifen oder If/Then-Abfragen auch richtig abgeschlossen wurden... und nur so können fremde Leute den Code auch vernünftig lesen...
Im Prinzip so >>>
So siehst Du bei Dir, dass Zeilen aus Do-Schleifen und If-Abfragen ineinander greifen >>> Do > If > Loop > End IfCode:If bla1 = z Then blabla If bla2 = y Then Do bleble If bla3 = x Then Do blibli bloblo blublu Loop Until w > v Else U = t End If s = U ^ 2 If s > 0 Then Exit Do Loop ElseIf bla2 = p Then s = m Else MsgBox "mierda" End If Else MsgBox "bravo" End If
Das dürfen sie nicht.
Auch das Schleifenwort Next fällt dann auf, es beendigt eine Schleife, die es gar nicht gibt.
Die vielen Next stammen wohl aus Versuchen mit einer For/Next-Schleife >>> weg damit.
Wenn das einmal zerpflückt und geordnet ist, wirst Du selbst Fehler entdecken, für den Rest sind wir dann hier...
Nur noch soviel zu Deinem Code >>>
account = InputBox("Bitte geben Sie.....Benutzernamen...",........)
If account.Text = "" Then
>>> account ist eine Variable, es muss also heissen >
If account = "" Then
Mit diesen Inputboxen in Do/Loop-Schleifen vergewaltigst Du den User ...wenn der Code denn richtig funktionieren würde...
1. wird der Code nie "" zurückgeben, entweder gibt er die User-Einagbe zurück... oder dann halt "Admin", das hast Du ja explizit als Default-Eingabe gesetzt. Nur wenn der User zuerst den Default löscht und dann nichts eingibt, kommt "", oder bei "Abbruch"...
2. kann der User bei der Eingabe merken, dass ihm eine Angabe noch fehlt, dann muss er aussteigen können...
...sonst bleibt er in der Do/Loop-Schleife gefangen bis zu seiner Pensionierung...
Ich würde das ohne Do/Loop und ohne Default-Eingabe einfach so machen >
account = InputBox("Bitte geben Sie den Benutzernamen Ihres neuen Accounts ein!", "Name?")
If account = "" Then wscript.Quit
"Abbrechen" oder keine Eingabe liefert dann "" ......und der Script beendet sich.
Wenn ein vertrottelter User meint, er könne ohne Eingabe weiterkommen... dann hat er wieder etwas gelernt !
Gruss UrsGeändert von Urs2 (02.04.2010 um 03:29 Uhr)
-
02.04.2010, 15:17 #7
Falscher Thread, sorry !
-
02.04.2010, 19:39 #8
Grundlegend würde ich das ganze so aufbauen
Kommentare findest du im Code.
Code:ON Error Resume Next DIM Aktion,Benutzer,Passwort Aktion = InputBox("Was wollen Sie tun ?" &vbCrlf & "1 = Account anlegen" &vbCrlf & "2 = Account löschen" &vbCrlf & "3 = Hilfe","Account Creator","3") SELECT CASE Aktion CASE 1 MsgBox "Es wird ein neuer Account angelegt." Do Until Benutzer > "" Benutzer = InputBox("Bitte geben Sie den Benutzernamen für den neuen Account ein !","neuen Benutzer erstellen","Testaccount") Loop Do Until Passwort > "" Passwort = InputBox("Bitte geben Sie das Benutzerpasswort für den neuen Account ein !","neuen Benutzer erstellen","geheimesPasswort") Loop MsgBox "Neuer Account wird mit folgenden Daten erstellt..." &vbcrlf & "Benutzername:" & " " & Benutzer &vbCrlf & "Benutzerpasswort:" & " " & Passwort 'Hier kommt dann der ganze Code zum Anlegen des Accountes hin CASE 2 MsgBox "Es soll ein Account gelöscht werden" 'Hier kommt der Code zum Löschen des Accountes hin CASE 3 MsgBox "Sie benötigen also Hilfe" 'Hier kommt der ganze Code für die Hilfe hin CASE ELSE MsgBox "Nanu ! Hier stimmt was nicht. Sie haben sich weder für Punkt 1, noch für Punkt 2 und auch nicht für Punkt 3 entschieden" 'Hier das was passiert wenn die Eingabe nicht 1, 2 oder 3 war. 'Anmerkung: Ich würde dann autom. die Hilfe öffnen 'Demzufolge könnte man auch Case 3 rausnehmen und die Hilfe direkt unter Case Else setzen 'Das würde bewirken das der User automatisch die Hilfe vorgesetzt bekommt, wenn er etwas anderes wie 1 oder 2 wählt END SELECTMfG VB-Coder
-
02.04.2010, 22:39 #9
Gesperrt
- Registriert seit
- 01.2010
- Beiträge
- 19
wow!
@ urs2: werd ich mal so machen, seh selber net mehr durch
@ vbcoder: danke werd ich gleich mal ausprobieren
12


Lesezeichen