The following example demonstrates how to use the tag within a Windows Script File: MsgBox “Error handling and debugging have been enabled.” As you can see, both error reporting and
Trang 1The WSH currently supports XML version 1.0 Version 1.0 supports both upper-case and lowerupper-case spelling of tag elements However, lowerupper-case spelling is preferred, and I recommend that you do use only lowercase spelling This way, if lowercase spelling becomes a requirement in a future version of XML, you will not have to retrofit your Windows Scripts Files for them to continue to run
Examining WSH Supported XML Tags
XML represents an extensive and powerful multipurpose markup language XML is therefore often used in many environments, including the WSH In this chapter, I’ll introduce you to
a number of commonly used XML tags, and I’ll provide examples of how they’re used to build Windows Script Files
To begin, take a look at Table 12.1, which shows the XML tags that you’ll see demonstrated
in this chapter’s examples
T R I C K
<?job ?> Enables or disabled error handling and debugging for a specified job.
<?XML ?> Specifies the Windows Script File’s XML level.
<comment> </comment> Embeds comments within Windows Script Files.
<script> </script> Identifies the beginning and ending of a script within a Windows
Script File.
<job> </job> Identifies the beginning and ending of a job inside a Windows Script File.
<package> </package> Enables multiple jobs to be defined within a single Windows Script File.
<resource> </resource > Defines static data (constants) that can be referenced by script within
a Windows Script File.
TA B L E 12 1 X M L TA G S CO M M O N LY US E D
I N WI N D O W S SC R I P T FI L E S
Using the <?job ?> Tag
The <?job ?>tag allows you to enable or disable error reporting and debugging within your Windows Script Files The use of this tag is optional Unlike most tags, the <?job ?>tag does not have a closing tag The syntax for this tag is as follows:
<?job error=”flag” debug=”flag” ?>
Trang 2Both error and debug are Boolean values By default, both are set equal to false Setting error=“true”turns on error reporting, thus allowing syntax and run-time error messages to
be reported Setting debug=“true” turns on debugging for Windows Script Files, allowing them to start the Windows script debugger
To take advantage of the <?job ?>tags’ debug capability, you’ll need to install the Microsoft Windows script debugger utility This utility is designed to assist programmers in debugging script errors To learn more about this utility, check out msdn.microsoft.com/scripting
The following example demonstrates how to use the <?job ?>tag within a Windows Script File:
<job>
<?job error=”true” debug=”true”?>
<script language=”VBScript”>
MsgBox “Error handling and debugging have been enabled.”
</script>
</job>
As you can see, both error reporting and script debugging have been enabled
Using the <?XML ?> Tag
The <?XML ?>tag is used to specify the version of XML required to support a Windows Script File As with the <?job ?>tag, the use of this tag is optional
When used, the <?XML ?>tag must be the first tag defined as the first statement in the Win-dows Script File The syntax for the <?XML ?>tag is as follows:
<?XML version=”version” standalone=”DTDflag” ?>
Version specifies the version of XML required to support the Windows Script File The cur-rent version is 1.0 Standalone is used to specify an external Document Type Definition, which is a feature not currently supported by the WSH However, you can still include it if you want, but you’ll have to specify it as having a value of Yes(but it will still be ignored) When used, the <?XML ?> tag enforces stricter interpretation of all XML statements; it also enforces case-sensitivity, while requiring that all values be specified within either single or double quotes Omitting this tag provides for a less restrictive syntax Let’s look at the fol-lowing example, which demonstrates the placement of a <?XML ?>tag at the beginning of a small Windows Script File
T R I C K
Trang 3<?XML version=”1.0” standalone=”yes” ?>
<job>
<?job error=”true” debug=”true”?>
<script language=”VBScript”>
MsgBox “Error handling and debugging have been enabled.”
</script>
</job>
The <comment> </comment> Tags
You can document the XML statements used within your Windows Script Files using the XML <comment>and </comment>tags Using these tags, you can spread comments over multiple lines The syntax for the <comment>and </comment>tags is as follows:
<comment> Comment Text </comment>
The following example demonstrates the use of the XML <comment>and </comment>tags
<?XML version=”1.0” standalone=”yes” ?>
<job>
<?job error=”true” debug=”true”?>
<comment>The following VBScript displays an information message</comment>
<script language=”VBScript”>
MsgBox “Error handling and debugging have been enabled File “
</script>
</job>
The <job> </job> Tags
To embed a script into a Windows Script File, you must first define a pair of root tags The
<job>and </job>tags provide one type of root tag pair
All Windows Script Files are composed of at least one job The beginning and ending of a job are identified by the <job>and </job>tags The syntax for the tags is as follows:
<job [id=JobID]>
.
</job>
When only one job is defined within a Windows Script File, the id=JobIDparameter can be omitted from the opening <job>tag However, if two or more jobs are defined within a single Windows Script File, each must be given a unique IDassignment This assignment allows you to execute any job within the Windows Script File
Trang 4The following example shows a Windows Script File that contains a single job The job itself
is made up of two different scripts:
<?XML version=”1.0” standalone=”yes” ?>
<job>
<?job error=”true” debug=”true”?>
<comment>The following VBScript displays a information message</comment>
<script language=”VBScript”>
MsgBox “VBScript has displayed this message.”
</script>
<comment>The following JScript displays an information message</comment>
<script language=”JScript”>
WScript.Echo(“JScript has displayed this message.”);
</script>
</job>
If you double-click on the file, you’ll see two pop-up dialogs appear, as shown in Figures 12.6 and 12.7 The VBScript generates the first pop-up dialog, and the JScript generates the other
To place more than one job within a Windows Script File, you must use the <package>and
</package>tags, which I’ll explain next
Figure 12.6
A pop-up dialog
displayed by the
Windows Script
File’s VBScript.
Figure 12.7
A pop-up dialog
displayed by the
Windows Script
File’s JScript.
Trang 5The <package> </package> Tags
To place more than one job within a Windows Script File, you must enclose the jobs within the <package>and </package> tags The syntax for these tags is as follows:
<package>
.
</package>
To understand their use, look at the following example:
<?XML version=”1.0” standalone=”yes” ?>
<package>
<comment>The following job contains a VBScript and a JScript</comment>
<job id=”job1”>
<?job error=”true” debug=”true”?>
<comment>The following VBScript displays an information message</comment>
<script language=”VBScript”>
MsgBox “A VBScript has displayed this message.”
</script>
<comment>The following JScript displays an information message</comment>
<script language=”VBScript”>
WScript.Echo “A JScript has displayed this message.”
</script>
</job>
<comment>The following job contains one VBScript</comment>
<job id=”job2”>
<script language=”VBScript”>
MsgBox “A second VBScript has displayed this message.”
</script>
</job>
</package>
In this Windows Script File, the <package>and </package>tags are used to define two jobs The first job is assigned an IDof job1, and the second job has been assigned an IDof job2
Trang 6The <resource> </resource> Tags
You have already learned about the advantages of defining constants within your VBScripts However, these constants are only available within the script that defines them Using the XML <resource>and </resource>tags, you can define constants within your Windows Script Files that can then be accessed by every script located within the same job Therefore, when used, these tags must be placed within the <job>and </job>tags
The syntax of the <resource>and </resource>tags is as follows:
<resource id=”resourceID”>
</resource>
Idspecifies the name of the constant whose value is then assigned when you type it between the opening and closing tags, as demonstrated in the following example:
<job>
<resource id=”cTitleBarMsg”>TestScript.wsh</resource>
<script language=”VBScript”>
Set objWshShl = WScript.CreateObject(“WScript.Shell”)
MsgBox “Greetings”, , getResource(“cTitleBarMsg”)
</script>
</job>
The <script> </script> Tags
You’ve already seen the <script>and </script> tags in action a number of times in this chapter They are used to mark the beginning and ending of individual scripts embedded within jobs in Windows Script Files The syntax for these tags is as follows:
<script language=”language” [src=”externalscript”]>
.
</script>
Trang 7languagespecifies the scripting language used to create a script The src argument is used
to specify an optional reference to an external script If used, the external script is called and executed just as if it were embedded within the Windows Script File
Let’s look at an example of how to create a Windows Script File that includes both an embed-ded VBScript and one that is externally referenced As you can see, the following Windows Script File includes a reference to two VBScripts:
<job>
<script language=”VBScript”>
MsgBox “This message is being displayed by an embedded VBScript”
</script>
<script language=”VBScript” src=”TestScript.vbs” />
</job>
The embedded VBScript simply displays a text message stating that it has executed Similarly, the external VBScript might consist of a single statement that uses the MsgBox()function to display a similar message
MsgBox “This message is being displayed by an external VBScript”
If you create both of these scripts and then double-click on the Windows Script File, you’ll see that both scripts will execute and display their pop-up dialog in sequence
In the Real World
In the real world, time is money Saving time during script development means that you can get more done in less time One of the ways that experienced programmers save time is by creat-ing reusable code You can use Windows Script Files to save development time by externalizcreat-ing scripts that perform common tasks This way, you can set up a reference to those scripts in any number of Windows Script Files without having to reinvent the wheel In addition, you’ll save yourself a lot of maintenance work because if you ever need to modify a commonly used exter-nal script, you’ll only have to make the change to the script once This is preferable to making the same change over and over again in any scripts where you embedded copies of the script.
Trang 8Executing Your Windows Script Files
As you know, you can run a Windows Script File by double-clicking on it When started this way, the Windows Script File runs the first job that has been defined If more than one job has been defined within the Windows Script File, you can execute any job by running the script from the Windows command prompt and specifying the job’s ID, as demonstrated next Of course, every script contained within the job that is run will be executed
Let’s look at some examples of how to run Windows Script Files from the Windows com-mand prompt To run the first script in a Windows Script File that contains two jobs, just type the name of an execution host, followed by the name of the Windows Script File cscript TestWsfScript.wsf
If the two jobs in the Windows Script Files have been assigned job IDs of job1and job2, you can selectively execute either job by specifying its ID
wscript TestWsfScript.wsf //job:job2
Back to the VBScript Game Console
The VBScript Game Console project is actually a Windows Script File designed to display a list of VBScript games that is dynamically generated based on the contents of a game folder Once started, the VBScript Game Console gives the user easy access to any VBScript games that you have stored in the game folder
The VBScript Game Console is actually made up of three different scripts, two written in JScript, and the other, written in VBScript The rest of this chapter explains how the VBScript Game Console is built
Designing the Game
The VBScript Game Console consists of three different scripts written using two different WSH-supported scripting languages, VBScript and JScript Because JScript is a full-featured scripting language in its own right, I won’t be able to go into great detail about its syntax
or structure However, I’ve tried to organize this Windows Script File in such a way as to ensure that the JScript you see is not overly complex Hopefully, given the comments that I have added to each script, you will be able to understand what’s happening in each JScript The VBScript Game Console will be created in four stages:
• Stage 1: Create a .wsffile and add the XML statements required to define the script’s structure
Trang 9• Stage 2: Create the first JScript, which will be responsible for displaying the VBScript
Game Console’s initial splash screen and determining whether the user wants to open the console
• Stage 3: Design the Windows Script File’s VBScript, wherein the logic that controls
the operation of the game console is stored
• Stage 4: Create a second JScript, which is responsible for displaying the VBScript
Game Console’s closing splash screen
Using XML to Outline the Script’s Structure
The first stage in developing the VBScript Game Console involves two activities First, create
a new file and save it with a .wsffile extension, thus creating a new Windows Script File Second, add the XML tags required to outline the overall structure of the Windows Script File, like this:
<package>
<comment>This WSF file builds a VBScript Game Console</comment>
<job>
<resource id=”cTitlebarMsg”>VBScript Game Console</resource>
<script language=”JScript”>
</script>
<script language=”VBScript”>
</script>
<script language=”JScript”>
</script>
<script language=”JScript”>
</script>
</job>
</package>
Trang 10The <package>and </package>tags were not required because this Windows Script File only contains one job I added them anyway, just in case I ever decide to expand the script by adding another job For example, if script configurations are ever migrated to the Windows registry, it might be helpful to define a second job to the Windows Script File specifying a setup script
The <comment>and </comment> tags were added to help document the function of the Win-dows Script File The opening <job>and closing </job>tags define the Windows Script File’s only job As only one job was defined, I did not bother to add the <job>tag’s IDattribute Finally, three separate sets of <script>and </script> tags have been created, marking the location at which each script that makes up the Windows Script File will be placed
Writing the First JScript
Because the focus of this book is on VBScript as a WSH scripting language and not on JScript, I’m not going to attempt to explain in detail the following JScript This script is rel-atively simple, and you should be able to tell what’s going on by looking at the comments embedded within the script itself
//*******************************************************************
//Script Name: N/A
//Author: Jerry Ford
//Created: 12/20/02
//Description: This JScript displays the WSF file’s initial splash
// screen
//*******************************************************************
//Initialization Section
var objWshShl = WScript.CreateObject(“WScript.Shell”);
var strWelcome;
var strInstructions;
var intResults;
var intReply;
var strTitleBarMsg;
strWelcome = “Welcome to the VBScript Game Console “;
strInstructions = “Click on OK to play a VBScript game!”;