Script Console

Übersicht

Version 1.3 (Build 20)

Samples | History

Das Programm ist in 2 Bereiche untergliedert: Script und Console

Script-Bereich

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.

Hinweis:

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:\\" !

Console-Bereich

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.

Drag & Drop

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.

Command-Mode

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"))

Calculator-Mode

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  

Zusätzlich zur jeweiligen Script-Engine implementierte Befehle

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.vbs
function fac(n)
  if n>1 then
    fac = n*fac(n-1)
  else
    fac = 1
  end if
end function
Datei math.js
function 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 "" übergeben. In der Script Console ist dieser Parameter optional.

? 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

Vordefinierte Objekte

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
WScript.DisconnectObject
WScript.GetObject


Beschreibung: WScript-Object

Beispiel-Module

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")
dim f
set f = new clsFileLib.file
f.init "math.vbs"
msgbox f.content,vbInformation,f.filespec