VBScript
Developer Microsoft | | |
First appeared | 1996 | |
---|---|---|
Stable release | 5.8
| |
Windows PowerShell |
VBScript ("
VBScript uses the
A VBScript script must be executed within a
History
VBScript began as part of the Microsoft Windows Script Technologies, launched in 1996. This technology (which also included JScript) was initially targeted at web developers. During a period of just over two years, VBScript advanced from version 1.0 to 2.0, and over that time it gained support from Windows system administrators seeking an automation tool more powerful than the batch language first developed in the early 1980s.[4] On August 1, 1996, Internet Explorer was released with features that included VBScript.[5]
In version 5.0, the functionality of VBScript was increased with new features including
In version 5.5, SubMatches[8] were added to the regular expression class in VBScript, to finally allow script authors to capture the text within the expression's groups. That capability had already been available in JScript.
With the advent of the
On October 9, 2023, Microsoft announced plans to deprecate and eventually remove VBScript from future Windows versions.[10]
Environments
When employed for client-side web development in Microsoft Internet Explorer, VBScript is similar in function to JavaScript. It is used to write executable functions that are embedded in or included from HTML pages and interact with the Document Object Model (DOM) of the page, to perform tasks not possible in HTML alone. However, other web browsers such as Firefox and Opera and recently Chrome do not have built-in support for VBScript. This means that where client-side scripting and cross-browser compatibility are required, developers usually choose JavaScript over most other programming languages, such as VBScript.
VBScript is also used for server-side processing of web pages, most notably with Microsoft Active Server Pages (ASP). The ASP engine and type library, asp.dll, invokes vbscript.dll to run VBScript scripts. VBScript that is embedded in an ASP page is contained within <% and %> context switches. The following example of an ASP page with VBScript displays the current time in 24-hour format, but it is also used as the default script for error messages with the Windows operating systems.
<% Option Explicit %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>VBScript Example</title>
</head>
<body>
<div><%
' Grab current time from Now() function.
' An '=' sign occurring after a context switch (<%) is shorthand
' for a call to the Write() method of the Response object.
Dim timeValue : timeValue = Now %>
The time, in 24-hour format, is
<%=Hour(timeValue)%>:<%=Minute(timeValue)%>:<%=Second(timeValue)%>.
</div>
</body>
</html>
VBScript can also be used to create applications that run directly on a workstation running
VBScript can be included in two other types of scripting files: Windows Script Files, and HTML Applications.
A Windows Script File (WSF) is styled after XML. A WSF file can include multiple VBS files. As a result, WSF files provide a means for code reuse: a library of classes or functions can be stored in one or more .vbs
files, which can be included in .wsf
files, so the functionality can be reused in a modular way. The files have extension .wsf
and can be executed using wscript.exe or cscript.exe, just as a .vbs
file can.
An HTML Application (HTA) is styled after HTML. The HTML in the file is used to generate the user interface, and a scripting language such as VBScript is used for the program logic. The files have extension .hta
and can be executed using mshta.exe.
VBScript (and JScript) can also be used in a Windows Script Component, an ActiveX-enabled script class that can be invoked by other COM-enabled applications.[11] These files have extension .wsc.
VBScript is simple to create and can be coded using an easy to use text editor like Notepad. A simple VBScript saved by the .vbs
extension can be run on a Windows system by double clicking it.
Functionality
Language features
The language of VBScript is modeled on Visual Basic, and therefore can be reviewed using similar categories: procedures, control structures, constants, variables, user interaction, array handling, date/time functions, error handling, mathematical functions, objects, regular expressions, string manipulation, and so on.[12]
The following are some key points of introduction to the VBScript language by Microsoft
A "procedure" is the main construct in VBScript for separating code into smaller modules. VBScript distinguishes between a function, which can return a result in an assignment statement, and a subroutine, which cannot. Parameters are positional, and can be passed by value or by reference.
Control structures include the usual iterative and conditional Do Loops, If-Then-Else statements, and Case statements, with some more complex variants, such as ElseIf and nested control structures.
As a memory aid in coding, and certainly for readability, there are a large number of constants, such as True and False for logical values, vbOKCancel and vbYesNo for MsgBox codes, vbBlack and vbYellow for color values, vbCR for the carriage return character, and many others.
Variables have "Variant" type by default, but it is possible (and sometimes necessary) to force a particular type (integer, date, etc.) using conversion functions (CInt, CDate, etc.)
User interaction is provided through the functions MsgBox
and InputBox
which provide a simple dialogue box format for messages and input. Both functions display prompting messages, with the former returning a standard response, and the latter returning one user-supplied text or numeric value. For more elaborate GUI interaction with controls, VBScript can be used in combination with HTML, for example, in an HTML Application. Event-driven forms are not supported as in Visual Basic or Visual Basic for Applications.
Names are not case-sensitive. However, it is considered a best practice of VBScript style to be consistent and to capitalize judiciously.
VBScript functionalities
When hosted by the
- Named and unnamed command line arguments,
- stdout, which could be redirected,
- WSH.Echo which writes to the console and cannot be redirected,
- WSH.ExitCode which can be tested from DOS batch files, or by the process which invoked the script file,
- Network Printers,
- Network Shares,
- Special Folders, e.g. Desktop, Favorites, MyDocuments and so on,
- Network user information, such as group membership,
- Methods for runtime execution of text defined at runtime: Eval and Execute,
- Methods for executing scripts on remote machines,
- Windows Management Instrumentation (WMI)
- Functionality for embedding a VBScript engine in other applications, using a widely known language.
CScript, the command line runner, provides options for:
- Interactive or Batch Mode,
- Invoking Debug Mode from the command line,
- Error reporting including the line number.
Additional functionality
File system management, file modification, and streaming text operations are implemented with the Scripting Runtime Library scrrun.dll
. This provides objects such as FileSystemObject, File, and TextStream, which expose the Windows file system to the programmer.
Binary file and memory I/O are provided by the "ADODB.Stream" class, which can also be used for string builders (to avoid excessive string concatenation, which can be costly), and to interconvert byte arrays and strings. Database access is made possible through
Functionality can also be added through ActiveX technologies. Security concerns have led to many ActiveX controls being blacklisted in the Internet Explorer process by Microsoft, which deploys the killbit via monthly Windows security updates to disable vulnerable Microsoft and third party code.[13][14]
Programmers can utilize the extensibility via COM (ActiveX) modules to specifically equip the Script Host and VBScript with required or desired functions. The "VTool" component, for instance, adds a number of dialog windows, binary file access, and other functionality.[15]
Development tools
Microsoft does not routinely make available an IDE (
For debugging purposes the Microsoft Script Debugger can still be used in current Windows versions, even though the tool has not been updated in years. It allows the user to set break points in the VBScript code but the user interface is more than clumsy.
There are VBScript debuggers available from third-party sources,[16][17] and many text editors offer syntax highlighting for the language.
During execution, when an error occurs, the script host issues a message stating the type of error and the number of the offending line.
Uses
Although VBScript is a general-purpose scripting language, several particular areas of use are noteworthy. First, it used to be widely used among system administrators in the Microsoft environment,
VBScript omits several useful features of the full Visual Basic, such as strong typing, extended error trapping and the ability to pass a variable number of parameters to a subroutine. However, its use is relatively widespread because it is easy to learn and because those who implement code in the language need not pay royalties to Microsoft as long as the VBScript trade mark is acknowledged.[citation needed] When an organization licenses Visual Basic for Applications (VBA) from Microsoft, as companies such as Autodesk, StatSoft, Great Plains Accounting and Visio (subsequently acquired by Microsoft) have done, it is allowed to redistribute the full VBA code-writing and debugging environment with its product.
VBScript is used in place of VBA as the macro language of Outlook 97.
VBScript can be effectively used for automating day to day office tasks as well as monitoring in the Windows-based environment. It can also be used in collaboration with ADODB ActiveX Data Objects (ADODB) for effective database connectivity.
VBScript can also be used to create malware and viruses, such as the ILOVEYOU worm that spread through email attachment in Outlook 97 that cost billions of dollars.
Deprecation and Removal from Windows
In October 2023, Microsoft announced that VBScript is deprecated in Windows and is slated to be removed in a future release.[21]
See also
- AppleScript
- FastTrack Scripting Host
- HTML Components
- JavaScript
- JScript .NET
- JScript
- PerlScript
- Windows PowerShell
- Windows Script File
References
- ^ WSH Version Information, on MSDN
- ^ VBScript Version Information, on MSDN
- ^ What is VBScript?, in MSDN Library
- ^ 86-DOS
- ^ "The History of Visual Basic". www.johnsmiley.com.
- ^ Visual Basic Scripting Edition: With Statement, on MSDN
- ^ GetRef Function, on MSDN
- ^ Visual Basic Scripting Edition: SubMatches Collection, on MSDN
- ^ What About VBScript?, within the article Introducing JScript .NET by Andrew Clinick of Microsoft Corporation, in Scripting Clinic on MSDN (July 14, 2000)
- ^ "Deprecated features for Windows client". 7 November 2023.
- ^ Introducing Windows Script Components, on MSDN
- ^ "VBScript Features". msdn.microsoft.com. 24 October 2011.
- ^ "How to stop an ActiveX control from running in Internet Explorer". Microsoft. 2007-08-24. Retrieved 2009-06-29.
- ^ "Microsoft Security Advisory (960715): Update Rollup for ActiveX Kill Bits". Microsoft. 2009-01-17. Retrieved 2009-06-29.
- ^ "VTool" script component – GUI and functional enhancements for WSH/VBS
- ^ "VbsEdit - VBScript Editor with Debugger - VBS Editor". www.vbsedit.com.
- ^ Corp., Spline Technologies. "SplineTech VBS Debugger, VBScript Debugger. Debug VBS". www.remotedebugger.com.
- ^ Script Center, Microsoft web site targeting system administration scriptors
- ^ "Quick Test Professional – Basics of VBScript". Archived from the original on 2010-02-17. Retrieved 2010-05-05.
- ^ "Caché for Unstructured Data Analysis". InterSystems. Retrieved 2018-09-24.
- ^ "Deprecated features in the Windows client - What's new in Windows". 7 November 2023.
External links
- VBScript Language Reference, Microsoft Docs
- Is VBScript Dead?, isvbscriptdead.com
- VBScript Commands, ss64.com
- VBScript How-to guides and examples, ss64.com
- WMI Overview, Microsoft TechNet