constricta
Goto Top

vbs inputbox eingabe in batch einfügen

zuerstmal sry wenn das wo falsch drinnen ist! face-sad

also ich kenn mich mit vbs noch nicht so gut aus aber ich fang mal an

ich öffne eine batch datei, die öffnet zb. ein vbs inputbox fenster (zb. geben sie ihr alter ein)
danach wird die zahl (zb. 53) in der batch an einer bestimmten zeile eingefügt!

danke schonmal und nochmal sry für doppelpost/falsches unterforum/etc..

lg

Content-ID: 104777

Url: https://administrator.de/contentid/104777

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

bastla
bastla 26.12.2008 um 23:15:05 Uhr
Goto Top
Hallo ConsTricTa und willkommen im Forum!

zuerstmal sry wenn das wo falsch drinnen ist! face-sad
Kein Beinbruch - solltest Du selbst nach "Entwicklung / Programmiersprachen / Batch & Shell" verschieben können ...
Dein Batch könnte etwa so aussehen:
@echo off & setlocal
set In=%temp%\GetInput.vbs
>%In% echo Set args=WScript.Arguments:WScript.Echo InputBox(args(0), args(1), args(2))

set "Alter=" & for /f "delims=" %%i in ('cscript //nologo %In% "Bitte geben Sie Ihr Alter in Jahren ein!" "Alterseingabe" ""') do set "Alter=%%i"  

:Loop
set "Vorname=" & for /f "delims=" %%i in ('cscript //nologo %In% "Bitte geben Sie Ihren Vornamen ein!" "Vorname?" "Anonym"') do set "Vorname=%%i"  
If not defined Vorname goto :Loop
echo Ihr Vorname lautet "%Vorname%" und Sie sind %Alter% Jahre alt.  
Das Script für die "InputBox" wird im Batch selbst erzeugt - so muss nur eine Datei verwaltet / weiter gegeben werden.

Da das Script mit Parametern (Text, Fenstertitel, Vorgabewert - immer alle drei Parameter übergeben!) aufgerufen wird, kann es für die verschiedensten Eingaben verwendet werden.

Eine Kontrolle der Eingabe könnte im Script selbst erfolgen, im obigen Beispiel wird aber im Batch geprüft, ob ein nicht leerer (ein Leerzeichen genügt allerdings schon) Vorname eingegeben wurde - anderenfalls wird erneut zur Eingabe aufgefordert.

Das jedem Scriptaufruf vorangestellte
set "Variable="
sorgt dafür, dass nach dem Ablauf des Scripts die Eingabe in der Variable steht oder die Variable "not defined" ist.

Grüße
bastla
ConsTricTa
ConsTricTa 27.12.2008 um 13:34:35 Uhr
Goto Top
ok danke!
kenn mich leider noch zu wenig aus um das alles zu verstehen face-sad
will hier auch ned lang rumnerven aber könntest du mir nochmal erklären was genau die befehle für so ein fenster sind?

und gibts hier irg.wo schon einen thread wo solche befehle,etc. erklärt werden?
danke nochmal
lg
bastla
bastla 27.12.2008 um 14:00:26 Uhr
Goto Top
Hallo ConsTricTa!

Das VBScript sieht so aus:
Set args=WScript.Arguments
WScript.Echo InputBox(args(0), args(1), args(2))
Hier werden alle verwendeten Elemente als Argumente (nummeriert ab Index 0 für das erste Argument) beim Aufruf "mitgeliefert" - für die Eingabe des Vornamens sähe das praktisch so aus:
WScript.Echo InputBox("Bitte geben Sie Ihren Vornamen ein!","Vorname?","Anonym")  
Durch das "WScript.Echo" wird die Eingabe nicht erst in einer VBS-Variablen gespeichert, sondern gleich wieder ausgegeben - so kann sie der Batch dann übernehmen.

könntest du mir nochmal erklären was genau die befehle für so ein fenster sind?
Eigentlich ist nur genau diese eine Zeile dafür erforderlich. Wolltest Du im VBScript noch mehr mit der Eingabe anstellen (auswerten, umformatieren), dann etwa so:
Vorname=InputBox("Bitte geben Sie Ihren Vornamen ein!","Vorname?","Anonym")  
WScript.Echo Len(Vorname)&","&UCase(Vorname)  
In diesem Fall würde an den Batch die Länge des eingegebenen Vornamens (als Zeichenanzahl), ein Komma als Trennzeichen sowie der Vorname in Großbuchstaben zurückgegeben, wofür der Aufruf in Batch dann etwa so aussehen müsste:
set "Vorname=" & for /f "tokens=1* delims=," %%i in ('cscript //nologo %In%') do (set "Lang=%%i" & set "Vorname=%%j") 
Anmerkungen:
Die Variable %Lang% wird auf jeden Fall einen Wert erhalten (wenn nichts eingegeben wurde, ist die Länge eben 0), daher muss sie nicht unbedingt vorweg gelöscht werden.
Der Vorname könnte aus mehreren Wörtern bestehen und sogar das Trennzeichen "," enthalten, da in der "for"-Schleife durch das "1*" festgelegt ist, dass nur das erste Trennzeichen zu beachten ist - dadurch wird der Teil davor in die Laufvariable %%i und der gesamte Teil nach diesem ersten Trennzeichen (als Einheit) in %%j gesetzt.

Grüße
bastla
ConsTricTa
ConsTricTa 27.12.2008 um 15:44:51 Uhr
Goto Top
danke echt nett
werd das dann mal alles ausprobieren!
lg

EDIT:
vl. blöde frage aber %Alter% kann ich doch normalerweise für eine IF formel verwenden?! oder
(alter ist ja hier nur ein beispiel)
ich kriegs nämlich nicht hin
lg
bastla
bastla 27.12.2008 um 16:09:19 Uhr
Goto Top
Hallo ConsTricTa!

%Alter% kann ich doch normalerweise für eine IF formel verwenden?!
Etwa so:
if %Alter% geq 18 goto :Volljaehrig
Die Vergleichsoperatoren findest Du in der Online-Hilfe (mit "if /?").

Grüße
bastla