© TRAC Optische Computer Sensorik, Stuttgart 2002, em@il: trac@n.zgs.de


Windows Scripting Host

Inhalt

  1. Interpreter

    1. CScript als Standardinterpreter

    2. WScript als Standardinterpreter

  2. Scriptdatei

    1. VBS- Dateien

    2. Aufbau einer WSF- Scriptdatei

    3. Start eines Jobs aus einer WSF- Datei

    4. Einbinden von VBS- Scripten in eine WSF- Datei

    5. Definition von Kommandozeilenparameter

    6. Zugriff auf Kommandozeilenparameter

      1. Objektmodell von WScript

      2. Eigenschaften von WScript

  3. Script beenden

Interpreter


WScript

CScript



CScript als Standardinterpreter

c:\>cscript //H:cscript

WScript als Standardinterpreter

c:\>cscript //H:wscript

Scriptdatei

VBS- Dateien

Einfache Scripts können in VBS- Dateien abgelegt werden. Vorteil ist ein einfacher Quelltext ohne xml- Schnickschnack. Nachteil ist, das keine Quelltextbibliotheken eingebunden werden können.

Aufbau einer WSF- Scriptdatei

Eine WSF- Datei ist eine XML Datei mit folgender DTD:

<!ELEMENT package (job+)>
<!ATTLIST package id CDATA #REQIRED>

<!ELEMENT job (script+)>
<!ATTLIST job id CDATA #REQUIRED>

<!ELEMENT script (#PCDATA)>
<!ATTLIST script language CDATA #IMPLIED>
<!ATTLIST script src CDATA #IMPLIED>

Bspiel:

<?xml version="1.0"?>
<package id="Name_des_Package">
   <job id="1">
     <script language="VBScript">
     <![CDATA[
         WScript.Echo "Hallo Welt"
      ]]>      
      </script>
   </job>
   <job id="2">
      <script language="VBScript">
      <![CDATA[
         WScript.Echo "Hallo Welt 2"
      ]]>
      </script>
   </job>
</package>

Start eines Jobs aus einer WSF- Datei

Ohne weitere Angaben wird immer der erste Job gestartet. Mittels der Option //Job:<id> von cscript kann ein bestimmter Job gestartet werden:

cscript my.wsf //job:2

Einbinden von VBS- Scripten in eine WSF- Datei

Quelltexte können in einen Job über das Attribut src vom Element script eingebunden werden:

<script language="VBScript" src="tools.vbs">
</script>

Definition von Kommandozeilenparameter

Kommandozeilenparameter

benannte Parameter

unbenannte Parameter

/Parametername:Wert


<named name="Name" type="string|boolean|simple"
       required="true|false" helpstring="Hilfetext"
/>
<unnamed name="Name" many="true|false"
       required="true|false" helpstring="Hilfetext"
/>

Beispiel

<?xml version="1.0"?>
<package id="Name_des_Package">
   <job id="1">
      <runtime>
        <named name="p1" required="true" helpstring="p1- Ein benannter Parameter"/>
        <named name="p2" required="false" helpstring="p2- Parameter mit Wert"/>
        <unnamed name="p3" required="true" helpstring="p3- iregend ein Text"/>
      </runtime>
      <script language="VBScript" src="wsh-tools.vbs"></script>
      <script language="VBScript">
      <![CDATA[
         say "Hallo Martin, mal sehen, was Du so alles eingegeben hast:"

         for each n in WScript.Arguments.Named
             if isempty(WScript.Arguments.Named.Item(n)) then
                say(n & "hat keinen Wert")
             else
                say(n & "= " & WScript.Arguments.Named.item(n))
             end if
         next

      ]]>
      </script>
   </job>
</package>

Zugriff auf Kommandozeilenparameter

Objektmodell von WScript


Eigenschaften von WScript

Eigenschaft

Beschreibung

Name

Name des Scripting- Host

FullName

Vollständiger Pfad + Name zum Scripting- Host

Path

Wie FullName, jedoch ohne Name der Prog- Datei

ScriptFullName

Pfad + Name des aktuellen Scripts

ScriptName

Name der Scriptdatei

Version

Version des aktuell aktiven Scripting Hosts



Script beenden

WScript.Quit [ERR- Code]

Datei- IO




Dateien (Textstreams) öffnen

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(pfad as String, 
                            [IOMode as IOMode = ForReading],
                            [Create as Boolean = False],
                            [Format as Tristate = TristateFalse])

IOMode

Symbolische Konstante

Nummerische Konstante

Beschreibung

ForReading

1

Datei lesen

ForWriting

2

lesen und schreiben

ForAppending

8

anfügen


Tristate

Symbolische Konstante

Nummerische Konstante

Beschreibung

TristateTrue

-1

Unicode- Datei

TristateFalse

0

ASCII- Datei

TristateUseDefault

-2

Verwendung der Standardeinstellungen des OS


Datei (Textstreams) schließen

file.Close

Lese- und Schreiboperationen auf Dateien (Textstreams)

Lese- und Schreiboperationen

Funktion

Beschreibung

ReadAll() as String

Liest komplette Textdatei in einen String ein.

ReadLine() as String

Liest eine Zeile aus Datei in String ein

Read(anz_zeichen as Long) as String

Liest anz_zeichen aus Datei in einen String ein

Write(Text as String)

Kopiert Text in die Datei

WriteLine(Text as String)

Kopiert Text in die Datei und fügt einen Zeilenumbruch an

WriteBlankLines(anz_zeilen as Long)

Kopiert anz_zeilen Leerzeilen in die Datei


Position des Dateizeigers



Funktion/Eigenschaft

Beschreibung

AtEndOfLine


AtEndOfFile