En Windows Script File (WSF) er en XML formateret tekstfil. Elementer og deres indbyrdes hieraki er hér kort nævnt.
Filens første linje bør være:
<?xml version = "1.0" encoding = "utf–8"?>
Filen bør i editoren gemmes som en UTF–8 tekstfil
Hieraki
<package>
<job>
<runtime>
<description>
</description>
<named>
</named>
<example>
</example>
</runtime>
<reference />
<object />
<script>
</script>
</job>
</package>
Eksempel
Meget enkelt eksempel:
<?xml version = "1.0" encoding = "utf-8"?>
<package id = "pkgBasic">
<job id = "jobBasic">
<runtime>
<description>
Language : Windows Script File (WSF)
FileName : BasicExample.wsf
Author : Niels Grove-Rasmussen (NGR)
CreateDate : 2005-03-21
Description: Basic scripting in a Windows Script File (wsf)
Arguments : none
Usage : BasicExample.wsf
Example : cscript BasicExample.wsf
</description>
<example>
BasicExample.wsf
</example>
</runtime>
<script language = "vbscript">
<![CDATA[
Option Explicit
WScript.Echo ":: Hello World from VBScript"
]]>
</script>
<script language = "jscript">
<![CDATA[
WScript.Echo( ":: Hello World from JScript" );
]]>
</script>
<script language = "perlscript">
<![CDATA[
# use strict;
print ":: Hello World from Perl\n";
$WScript->Echo( ":: Hello World from Perl using WSH" );
]]>
</script>
</job>
</package>
Resultat ved kommandoen „cscript.exe BasicExample.wsf
“:
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
:: Hello World from VBScript
:: Hello World from JScript
:: Hello World from Perl
:: Hello World from Perl using WSH
Syntaks:
<job [id = JobID] [prompt = "flag"]>
job kode
</job>
Argumenter:
id
kan gives en streng, som er jobbets reference. Dermed kan flere jobs implementeres i én wsf–fil. Det enkelte job aktiveres med argumentet //job:
til wscript.exe eller cscript.exe.
prompt
kan gives en boolsk værdi af enten „yes“ eller „no“. Argumentet er ikke beskrevet i Microsoft dokumentationen, men brugt andre steder, så her mangler jeg lidt.
Fejlhåndtering i en wsf–fil sker med elementet <?job?>
.
Syntaks:
<?job error = "flag" debug = "flag" ?>
Argumenter:
error
kan gives en boolsk værdi. Default er False. Argumentet bestemmer om fejlmeddelelser fra syntaks eller afvikling skal vises.
debug
kan gives en boolsk værdi. Default er False. Argumentet bestemmer om scriptet kan debugges – om det er muligt at starte en debugger på wsf-filen.
Eksempel:
<job id = "jobTest" prompt = "yes">
<?job error = "true" debug = "true" ?>
job kode
</job>
Definition af navngivne argumenter.
Syntaks:
<named
name = namedname
helpstring = helpstring
type = "string | boolean | simple"
required = boolean
/>
Eksempel:
<named
name = "InstanceName"
helpstring = "The full name of the instance, ie. SERVER00\INSTANCE00"
type = "string"
required = "true"
/>
Oprettelse af globalt objekt.
Syntaks:
<object id = "objID" [ classid = "clsid:GUID" | progid = "progID" ] />
Eksempel:
<object id = "cnnNorthwind" progid = "ADODB.Connection" />
Definition af reference til COM objekt. Giver blandt andet direkte adgang til COM klassens konstanter. Det bruger jeg gerne!
Syntaks:
<reference [ object = "progID" | guid = "typelibGUID" ] [ version = "version" />
Eksempel:
<reference object = "ADODB.Connection" />
Isolering af globale hard–code værdier. Værdien læses med metoden getResource()
.
Syntaks:
<resource id = "resourceID">
<[CDATA[
tekst eller tal
]]>
</resource>
Eksempel:
<resource id = "resTest"><[CDATA[Denne tekst er en resurse.]]></resource>
<script language = "jscript">
WScript.Echo( 'Resource = "' + getResource( "Workday" ) + '".' );
</script>
Modsat normal XML–formatering, er det hele skrevet i én linje, da hele strengen mellem de to resource–tags tages med – inklusive linjeskift, indrykninger etc.
Resultat:
Resource = "Søndag".
Virker fuldstændig som i XHTML.