Script ConsoleÜbersicht |
Version 1.3 (Build 20) |
Das Programm ist in 2 Bereiche untergliedert: Script und Console
In diesem Bereich kann JScript/JavaScript- oder VBScript-Code eingegeben werden.
Im Menü Ausführen/JavaScript bzw. Ausführen/VBScript wird eingestellt, ob JavaScript (JScript) oder VB-Script verwendet wird.
Wird eine main()-Funktion (JavaScript) oder eine main-Prozedur (VBScript) definiert, wird diese bei Drücken von F5 oder aus dem Menü Ausführen/Start ausgeführt.
1) | Achten Sie bei JavaScript/JScript bitte darauf, daß "\" in Strings ein Steuerungszeichen ist. Soll dieses Zeichen in einem String, z.B. bei einer Pfadangabe, verwendet werden, müssen Sie "\\" eingeben, wie z.B. bei "C:\\" ! |
In diesem Bereich können Befehle direkt ausgeführt werden. Dabei können Funktionen/Prozeduren aus dem Script-Bereich aufgerufen oder dort definierte Variablen verwendet werden.
Sie können Text zwischen dem Script- und Console-Bereich, innerhalb der Bereiche wie auch von und zu anderen Programmen mit der Maus kopieren oder verschieben.
Sie können ein oder mehrere Dateien im selben oder in neuen Fenstern öffnen, in dem Sie diese z.B. aus dem Windows-Explorer auf die Titelleiste eines Script Console-Fensters ziehen.
Steuern Sie die Operation jeweils mit den [Strg]- und [Shift]-Tasten.
Ziehen Sie eine Datei, z.B. aus dem Windows-Explorer, auf die Titelleiste und halten gleichzeitig [Strg] + [Shift] gedrückt, können Sie einen relativer Include-Verweis in das aktuelle Script einfügen. Ist dabei [Strg] + [Shift] + [Alt], wird der Include-Verweis mit absolutem Pfad eingefügt
Ziehen Sie beliebigen Text auf die Titeleiste des Fensters, können Sie in gleicher Weise mit diesem Text verfahren. Beachten Sie dabei die Anzeige in der Statusleiste.
Befehle werden im Console-Bereich standardmäßig eingegeben, wie in der eingestellten Script-Sprache. Dies ist der sogenannte "Script-Mode".
Der Befehl run ist hier eine Ausnahme. Mit diesem Befehl wird das aktuelle Script ausgeführt wie von einer Command-Konsole und Parameter werden entsprechend übergeben.
Beispiel: run arg1 /arg2:value
Bei diesem Beispiel wird ein unbenannter Parameter arg1 sowie ein benannter Parameter mit dem Namen arg2 übergeben. Die Argumente werden im Script mit WScript.Arguments ausgewertet.
Darüber hinaus gibt es eine weitere Möglichkeit: den Command-Mode. In diesem Modus können Befehle ebenfalls wie in einer Command-Konsole eingegeben werden. Dazu wird eine z.B. im Script definierte Prozedur aufgerufen indem ihr ein # vorangestellt wird. Die Prozedur ist im Script mit einem Argument zu deklarieren, das wie WScript.Arguments ausgewertet werden kann.
VBScript-Beispiel:
private curdir curdir = app.path sub ls(args) ... if args.count then path = fso.buildpath(curdir,args(1)) else path = curdir end if 'listdir path ... end sub
Der Befehl ls kann nun auch wie folgt aufgerufen werden:
#ls c:\windows\system32
Wird in der Statusleiste [#] angeklickt, wird generell auf den Command-Mode umgestellt, d.h. jede Eingabe erfolgt jetzt wie im Command-Mode, auch ohne vorangestelltes #. der Aufruf von ls würde dann einfach wie folgt aussehen:
ls c:\windows\system32
Ein nochmaliger Klick auf [#] in der Statusleite schaltet den Command-Mode wieder aus.
Soll eine so deklarierte Funktion mit Script verwendet werden, kann ihr z.B. WScript.Arguments als übergeben werden. Mit der Funktion args() kann eine Arguments-Kollektion aus den einzelnen Argumenten erstellt werden. Wird args ohne Parameter augerufen, wird eine Arguments-Kollection mit 0 Elementen erstellt.
Syntax: args([arg1[,arg2[, ... argn]]])
VBScript-Beispiel:
ls args("c:\")
ls args
JScript:
ls(args("c:\\"))
ls(args())
Die Funktion parse() erzeugt eine Arguments-Collection aus einem Kommando-String. Damit sind auch benannte Argumente möglich.
mysub parse("arg1 /arg2:Wert")
myfunc(parse("arg1 /arg2:Wert"))
Im Console-Bereich ist implizit ein Taschenrechner verfügbar.
Ein Kommando, das mit einer Zahl, "=", den Operatoren "+","-","*","/","^" beginnt, wird als Befehl für den Taschenrechner interpretiert. Wird eine Ergebnis berechnet, wird dieses im im Console-Bereich ausgegeben. Der aktuelle Wert wird außerdem immer im Taschenrechner-Feld in der Statusleiste angezeigt. Die Bedienung erfolgt weitestgehend wie bei einem normalen Taschenrechner.
Beispiele:
Geben Sie eine Zahl ein, wird der aktuelle Wert des Taschenrechners durch diese Zahl ersetzt:
Eingabe: | 123 | Taschenrechner wird auf den Wert 123 gesetzt. In der Statusleiste wird der Wert angezeigt. |
Geben Sie nur "=" ein, um den aktuellen Wert des Taschenrechners auszugeben.
Eingabe: | = | Abfrage des aktuellen Wertes |
Ausgabe: | 123 |
Geben Sie "=" und eine Zahl oder einen mathematischen Ausdruck ein, wird ebenfalls der aktuelle Wert des Taschenrechners durch den neuen Wert ersetzt.
Eingabe: | = 2+3*4 | Ausdruck wird berechnet und übernommen |
Ausgabe: | 14 | Punkt vor Strich ;-) |
Es können auch Klammern verwendet werden um die Operatorreihenfolge zu ändern.
Eingabe | (2+3)*4 | mit Klammern; geht auch ohne "=" |
Ausgabe: | 24 |
Geben Sie einen Ausdruck oder eine Zahl beginnend mit einem Operator ein, wird der aktuell Wert des Taschenrechners entsprechend mit dem Ausdruck bzw. der Zahl berechnet und das Ergebnis ausgegeben:
Eingabe: | *5 | Operation auf aktuellen Wert anwenden |
Ausgabe: | 70 |
Auch Potenzen können berechnet werden:
Eingabe: | 2^10 | Potenz |
Ausgabe: | 1024 |
Wollen sie eine mathematische Funktion auf den aktuellen Wert des Tascherechners anwenden, beginnen Sie das Kommando mit "=" und übergeben der Funktion den Wert mit dem Zeichen "#".
Eingabe | 1.5 | Sie können "." oder "," für die Eingabe verwenden. Die Formatierung der Ausgabe erfolgt entsprechend der Spracheinstellungen des Systems. |
Eingabe: | =sin(#) | Der Wert sin(1.5) wird berechnet |
Ausgabe: | 0,997494986604054 |
Es können auch im Script-Bereich selbst definierte Funktionen auf diese Weise angewendet werden.
Eingabe: | =fnx(#) | Aufruf einer selbst definierten Funktion, hier z.B. fnx(x)=1/x |
Ausgabe: | 1,00251130424673 | |
Eingabe: | 1/# | und wieder retour ... |
Ausgabe: | 0,997494986604049 | (geringer Rundungsfehler) |
Wollen Sie den aktuellen Wert des Tascherechners per Script an eine Prozedur übergeben oder innerhalb des Scriptes verwenden wollen, verwenden Sie das Methode [windows.]calc. Der Rückgabewert enthält den aktuellen Wert des Taschenrechners.
Eingabe: | echo calc*2 | Verwendung mit Script (hier VBScript). Im Console-Bereich kann auch "?" statt "echo" verwendet werden. |
Ausgabe: | 1,9949899732081 |
Sie können der Methode [windows.}calc auch einen String übergeben, der als Kommando für den Taschenrechner interpretiert wird. Der Rückgabewert enthält den jetzt neu berechneten Wert im Taschenrechner. Sie können optional mit einem weiteren Parameter angeben (true/false), ob ein Berechnungsergebnis im Console-Bereich ausgegeben werden soll. Standardmäßig erfolgt hier keine Ausgabe.
Eingabe: | calc "-1" | Keine Ausgabe! Der interne Wert wird auf -2,50501339595099E-03 gesetzt. In der Statusleiste wird der Wert angezeigt. |
Eingabe: | calc "*2",true | ... diesmal mit Ausgabe |
Ausgabe: | -5,01002679190198E-03 | |
Eingabe: | echo calc("*-1") | Aufruf als Funktion. |
Ausgabe: | 5,01002679190198E-03 | |
Eingabe: | ? fnx(calc) | Bei Aufruf als Script "calc" statt "#" verwenden (hier z.B. mit "?" im Console-Bereich). |
Ausgabe: | 199,599731006701 | Hinweis: Es wurde hier nicht mit dem Taschenrechner gerechnet, sondern nur der aktuelle Wert mit "calc" abgefragt und dann im Script verwendet. Der Wert im Taschenrechner steht also immer noch bei 5,01002679190198E-03 ! :-) |
Werte können zwischengespeichert werden, indem sie einer beliebigen Variablen zugewiesen werden:
Eingabe: | m=calc | Aktuellen Wert in der Variable "m" speichern. m ist jetzt 5,01002679190198E-03 |
Eingabe: | 2 | bieliebig weiterrechnen, hier z.B. Taschenrechner einfach auf "2" gesetzt |
Eingabe: | *m | Variable "m" verwenden |
Ausgabe: | 0,010020053583804 |
folgende Befehle, die nicht in den Script-Engines enthalten sind, wurden implementiert:
Befehl | VBScript | JScript |
echo | echo arg1 [, arg2 [ , ...]] | echo(arg1 [, arg2 [, ...]]) |
Globale Methode [window.]echo: Ausgabe von arg1 etc. im Consolenbereich. Zwischen den Ausgaben wird ein Leerzeichen eingefügt. Die Ausgabe wird mit einem Zeilenumbruch beendet. Alternativ kann auch WScript.Echo verwendet werden (Siehe weiter unten!). |
||
printout | printout arg1[, arg2[, ...]] | printout(arg1[, arg2[, ...]]) |
Globale Methode [window.]printout: Ausgabe von arg1 etc. im Consolenbereich. Die Ausgabe wird jedoch im Gegensatz zu echo nicht mit einem Zeilenumbruch beendet. Auch werden zwischen den ausgegebenen Argumenten keine Leerzeichen eingefügt. |
||
alert | alert Meldung | alert(Meldung) |
Globale Methode [window.]alert: Ausgabe einer Meldung in einer MessageBox. Dies ist eine JavaScript-Funktion. Verwenden Sie in VBScript aus kompatibilitätsgründen besser MsgBox. |
||
confirm | confirm(Meldung) | confirm(Meldung) |
Globale Methode [window.]confirm: Meldung mit Ja/Nein-Abfrage. Der Rückgabewert enthält True/False. |
||
clear | clear | clear() |
Globale Methode [window.]clear: Löscht den Inhalt des Console-Bereiches |
||
include | set ns = include(ScriptFile) | ns = include(ScriptFile) |
Globale Methode [window.]include: Mit dieser Methode wird eine andere Scriptdatei als Namespace-Objekt hinzugefügt. Für ns kann ein beliebiger Variablenname gewählt werden. Auf die in der eingefügten Scriptdatei definierten öffentlichen Variablen, Funktionen und Prozeduren kann über das Namespace-Objekt zugegriffen werden. Es können relative Pfade (relativ zum aktuellen Scriptfile), und absolute Pfade verwendet werden. Die Variable app.path verweist auf den Pfad des Programmes. Die Beispielmodule befinden sich z.B. im Unterverzeichnis samples des Programmverzeichnisse. Das Programmverzeichnis steht in der Variable app.path. Die Datei "math.vbs" könnte also z.B. auch so includiert werden: set math=include(app.path & "/samples/math.vbs")
Beispiel für eine Include-Datei: |
||
Datei math.vbsfunction fac(n) if n>1 then fac = n*fac(n-1) else fac = 1 end if end function |
Datei math.jsfunction fac(n) { if (n>1) return n*fac(n-1); else return 1; } |
|
Verwendung von math.vbs: set math=include("math.vbs") sub test(x) msgbox x & "! = " & math.fac(x) _ , vbInformation, "Test Math" end sub |
Verwendung von math.js: math=include("math.js") function test(x) { alert(x + "! = " + math.fac(x)); } |
|
Geben Sie nun test 7 im Console-Bereich ein und drücken Sie Enter. |
Geben Sie nun test(7) im Console-Bereich ein und drücken Sie Enter. |
|
prompt | result = prompt(Aufforderungstext[, Vorbelegung]) | result = prompt(Aufforderungstext[, Vorbelegung]) |
Zeigt ein Dialogfenster mit einem Eingabefeld, einem OK-Button und einem
Abbrechen-Button an. Der Anwender kann in dem Eingabefeld etwas
eingeben. Die Methode prompt() gibt diesen eingegebenen
Wert zurück. So lassen sich Anwendereingaben im Script
weiterverarbeiten.Erwartet zwei Parameter: 1. Aufforderungstext = Text, der beschreibt, was der Anwender eingeben soll. 2. Vorbelegung = Optional, Text, mit dem das Eingabefeld vorbelegt wird Dies ist eigentlich eine JavaScript-Funktion. Verwenden Sie in VBScript aus kompatibilitätsgründen besser InputBox. Achtung: Unter WSH ist diese Funktion nicht verfügbar. Im Webbrowser ist diese Funktion verfügbar. Wenn Sie ein leeres
Eingabefeld wollen, müssen Sie für Vorbelegung eine leere
Zeichenkette |
||
? | Im Console-Bereich kann einfach ? statt echo verwendet werden. | |
run (Statement) |
Das Statement run ist kein gewöhnlicher Befehl. Mit diesem
Statement kann das aktuelle Script wie aus einer Windows-Console inkl.
Übergabe von Parametern aufgerufen werden. Aufruf ohne Parameter: run mit Parameter: run arg1 arg2 mit unbenannten und benannten Parametern: run arg1 /arg2:value Mit [windows.]command ist in Script Console die übergeben bzw. zu übergebende Kommandozeile direkt verfügbar: command = "arg1 /arg2:value" Bei [F5] werden die zuletzt übergebenen Parameter verwendet. Auf die Parameter kann mit WScript.Arguments zugegriffen weren. |
|
args |
args args([arg1 [, arg2 [, ... ]]]) |
args() args([arg1 [, arg2 [, ... ]]]) |
Erzeugt aus den Einzelargumenten arg1 ... argn eine Arguments-Collection und gibt diese als Funktionsergebnis zurück. Wird kein Argument übergeben, wird eine leere Arguments-Collection erstellt. | ||
parse |
parse parse("arg1 /args:Wert") |
parse() parse("arg1 /args:Wert") |
parsed einen String, der Kommandozeilenparameter enthält, und gibt eine Arguments-Collection zurück. Damit ist es auch möglich, Named-Argumente zu erzeugen. Wird keinString oder ein Leerstring übergeben, wird eine leere Arguments-Collection erstellt. | ||
calc |
calc calc "+(2+3)*4" calc ("+(2+3)*4") |
calc() calc ("+(2+3)*4") |
Methode [window.]calc zur Nutzung des Taschenrechners in Scripten |
folgende Objekte sind vordefiniert:
Object | Beschreibung | Members |
window | Das window-Objekt ist global, d.h. es muß nicht angegeben werden. Die Members von window können direkt verwendet werden | [window.]status (string):
Text in Statusleiste [window.]caption (string): Fenstertitel [window.]filename (string): Name des geladenen Script-Files [window.]script (Object): Siehe Script-Objekt! [window.]console (Object): Siehe Console-Object! [window.]clear (Methode): Console-Bereich löschen [window.]command (string): Kommandozeilen-Parameter [window.]calc (Methode): Taschenrechner |
script | Script-Eingabebereich | script.text (string):
Inhalt des Script-Bereiches script.setFocus (Methode): Eingabefocus auf Script-Bereich setzen |
console | Console-Bereich | console.text (string);
Inhalt des Console-Bereiches console.setFocus (Methode): Eingabefocus auf Console-Bereich setzen |
app | Application-Object | app.path (string); Pfad der
Programmdatei app.title (string): Titel des Programmes app.company (string): Hersteller app.copyright (string): Copyright app.about (string): About-Messagebox |
WScript | Eine WScript-Implementation zur Kompatibilität mit
dem
Windows Script Host Object Model Mit run oder über [window.]command können dem Script Parameter übergeben werden. Die Verwendung von [window.]command im Script selbst ist ist nur in Script Console möglich Auf diese Parameter kann mit WScript.Arguments zugegriffen weren. Siehe auch: WScript-Object |
WScript.Arguments (Collection):
an Script übergebene Argumente WScript.CreateObject (function): ActiveX-Objekt erzeugen WScript.Echo (statement): Konsolenausgabe wie [window.]echo WScript.FullName (string): Exe-Datei von Script Console WScript.Name (string): Programmname WScript.Path (string): Pafd zur Ece-Date des Programmes WScript.Quit [ReturnCode] (statement): Script beenden WScript.Sleep (statement): Scriptausführung unterbrechen WScript.ScriptFullName (string): Pfad und Name der Scriptdatei WScript.ScriptName (string): Name der Scriptdatei WScript.Version (String): Version von Script Console Noch nicht implementiert: WScript.ConnectObject Beschreibung: WScript-Object |
folgende Beispielmodule sind enthalten:
Modul | Members | Beschreibung |
math.vbs math.js |
function fac(n) | Berechnung der Fakultät von n |
function bkoeff(n,k) | Berechnung des Binomialkoeffizienten n über k | |
FileIO.js FileIO.vbs |
Demo für Datei-I/O-Funktionen mit Hilfe des FileSystemObject | |
function getDirList(path[,level]) (JavaScript) function getDirList(path,level,indent) (VBScript) |
Gibt Verzeichnisse und Unterverzeichnisse als String zurück path: Verzeichnis (level=0) bzw. Startverzeichnis (level>0) level: Tiefe der Unterverzeichnisse, default=0 indent: Beginn Einrückung, default=0 |
|
function getFileList(path) |
Liefert Dateien eines Verzeichnisses als String path: ist das Verzeichnis |
|
function listFiles(path) (JavaScript) sub listFiles path (VBScript) |
Gibt Dateien eines Verzeichnisses im Console-Bereich aus path: ist das Verzeichnis |
|
function listDirs(path[,level]) (JavaScript) sub listDirs path, level (VBScript) |
Gibt Verzeichnisse und Unterverzeichnisse im Console-Bereich aus. path: ist das Verzeichnis level: Tiefe der Unterverzeichnisse, default=0 |
|
function showFile(filespec) (JavaScript) sub showFile filespec (VBScript) |
Gibt die Datei filespec im Console-Bereich aus | |
function help() (JavaScript) sub help (VBScript) |
Gibt eine Anleitung zum Modul im Console-Bereich aus. | |
object.js object.vbs |
Demonstriert die Erzeugung von Klassen und Klassenvariablen in
JavaScript und VBScript. Klassendefinitionen können z.B. auch in separate Dateien ausgelagert werden, die anschließend mit include eingebunden werden: set clsFileLib = include("file.cls") |