Scripts are simple text files
that you create using Notepad or some other text editor. You can use a
word processor such as WordPad to create scripts, but you must make sure
that you save these files using the program’s Text Only document type.
For VBScript, a good alternative to Notepad is the editor that comes
with either Visual Basic or any program that supports VBA (such as the
Office suite). Just remember that VBScript is a subset of VBA (which is,
in turn, a subset of Visual Basic), so it does not support all objects
and features.
In a web page, you use the <script> tag to specify the scripting language you’re using, as in this example:
<SCRIPT LANGUAGE="VBScript">
With the Windows Script Host, the script file’s extension specifies the scripting language:
For VBScript, save your text files using the .vbs extension (which is registered as the following file type: VBScript Script File).
For JavaScript, use the .js extension (which is registered as the following file type: JScript Script File).
As described in the next
three sections, you have three ways to run your scripts: by launching
the script files directly, by using WSscript.exe, or by using CScript.exe.
Running Script Files Directly
The easiest way to run a script from within Windows is to launch the .vbs or .js
file directly. That is, you either double-click the file in Windows
Explorer or type the file’s path and name in the Run dialog box. Note,
however, that this technique does not work at the command prompt. For
that, you need to use the CScript program described a bit later.
Using WScript for Windows-Based Scripts
The .vbs and .js file types have an open method that’s associated with WScript (WScript.exe), which is the Windows-based front-end for the Windows Script Host. In other words, launching a script file named MyScript.vbs is equivalent to entering the following command in the Run dialog box:
The WScript host also defines several parameters that you can use to control how the script executes. Here’s the full syntax:
WSCRIPT filename
arguments //B //D //E:engine //H:host //I //Job:xxxx //S //T:ss //X
filename | Specifies the filename, including the path of the script file, if necessary. |
arguments | Specifies optional arguments required by the script. An argument is a data value that the script uses as part of its procedures or calculations. |
//B | Runs the script in batch mode, which means script errors and Echo method output lines are suppressed. |
//D | Enables
Active Debugging. If an error occurs, the script is loaded into the
Microsoft Script Debugger (if it’s installed) and the offending
statement is highlighted. |
//E:engine | Executes the script using the specified scripting engine, which is the scripting language to use when running the script. |
//H:host | Specifies the default scripting host. For host, use either CScript or WScript. |
//I | Runs the script in interactive mode, which displays script errors and Echo method output lines. |
//Job:,xxxx | In a script file that contains multiple jobs, executes only the job with id attribute equal to xxxx. |
//S | Saves the specified WScript arguments as the default for the current user; uses the following Registry key to save the settings: |
| HKCU\Software\Microsoft\Windows Script Host\Settings
|
//TT:ss | Specifies the maximum time in seconds (ss) that the script can run before it shuts down automatically. |
//X | Executes the entire script in the Microsoft Script Debugger (if it’s installed). |
For example, the following command runs MyScript.vbs in batch mode with a 60-second maximum execution time:
wscript myscript.vbs //B //TT:60
Creating Script Jobs
A script job
is a section of code that performs a specific task or set of tasks.
Most script files contain a single job. However, it’s possible to create
a script file with multiple jobs. To do this, first surround the code
for each job with the <script> and </script> tags, and then surround those with the <job> and </job> tags. In the <job> tag, include the id attribute and set it to a unique value that identifies the job. Finally, surround all the jobs with the <package> and </package> tags. Here’s an example:
<package>
<job id="A">
<script language="VBScript">
WScript.Echo "This is Job A."
</script>
</job>
<job id="B">
<script language="VBScript">
WScript.Echo "This is Job B."
</script>
</job>
</package>
Save the file using the .wsf (Windows Script File) extension.
Note
If you write a lot
of script, the Microsoft Script Debugger is an excellent programming
tool. If there’s a problem with a script, the debugger can help you
pinpoint its location. For example, the debugger enables you to step
through the script’s execution one statement at a time. If you don’t
have the Microsoft Script Debugger, you can download a copy from msdn.microsoft.com/scripting.
Using CScript for Command-Line Scripts
The Windows Script Host has a second host front-end application called CScript (CScript.exe),
which enables you to run scripts from the command line. In its simplest
form, you launch CScript and use the name of the script file (and its
path, if required) as a parameter, as in this example:
cscript myscript.vbs
The Windows Script Host displays the following banner and then executes the script:
Microsoft (R) Windows Script Host Version 5.7 for Windows
Copyright (C) Microsoft Corporation. All rights reserved.
As with WScript, the CScript host has an extensive set of parameters you can specify:
CSCRIPT filename arguments //B //D //E:engine //H:host //I //Job:xxxx //S //T:ss //X //U //LOGO //NOLOGO
This syntax is almost identical to that of WScript, but adds the following three parameters:
//LOGO | Displays the Windows Script Host banner at startup |
//NOLOGO | Hides the Windows Script Host banner at startup |
//U | Uses Unicode for redirected input/output from the console |
Script Properties and .wsh Files
In the last two
sections, you saw that the WScript and CScript hosts have a number of
parameters you can specify when you execute a script. It’s also possible
to set some of these options by using the properties associated with
each script file. To see these properties, right-click a script file and
then click Properties. In the properties sheet that appears, display
the Script tab, shown in Figure 1. You have two options:
![](http://programming4.us/image/112012/Scripts%20and%20Script%20Execution.jpg)
Stop Script After Specified Number of Seconds—
If you activate this check box, Windows shuts down the script after it
has run for the number of seconds specified in the associated spin box.
This is useful for scripts that might hang during execution. For
example, a script that attempts to enumerate all the mapped network
drives at startup might hang if the network is unavailable.
Display Logo When Script Executed in Command Console—
As you saw in the previous section, the CScript host displays some
banner text when you run a script at the command prompt. If you
deactivate this check box, the Windows Script Host suppresses this
banner (unless you use the //LOGO parameter).
When you make changes to
these properties, the Windows Script Host saves your settings in a new
file that has the same name as the script file, except with the .wsh (Windows Script Host Settings) extension. For example, if the script file is MyScript.vbs, the settings are stored in MyScript.wsh. These .wsh files are text files organized into sections, much like .ini files. Here’s an example:
[ScriptFile]
Path=C:\Users\Paul\Documents\Scripts\Popup1.vbs
[Options]
Timeout=0
DisplayLogo=1
To use these settings when running the script, use either WScript or CScript and specify the name of the .wsh file:
Note
Rather than setting
properties for individual scripts, you might prefer to set global
properties that apply to the WScript host itself. Those global settings
then apply to every script that runs using the WScript host. To do this,
run WScript.exe without any parameters. This displays the properties sheet for WScript, which contains only the Script tab shown in Figure 1. The settings you choose in the properties sheet are stored in the following Registry key:
HKLM\Software\Microsoft\Windows Script Host\Settings