Windows Scripting

If you want to write ASP or web pages with scripting, you'll have lots of friends. But if you want to write utilities using the Windows Scripting Host, you're on your own. There aren't many good sources of help out there. So let me offer what I have. By the way -- all I do is Visual Basic Scripting. No JavaScript here.

Favorite Links  Writing Your First Script  Debugging Your Scripts  Code Samples 

Favorite Links

Scripting Links:

Getting Scripting
This is the page you start at to get scripting if you don't have it. Sure, if you have Windows98/NTSP4 or newer, you already have it on your CDROM or hard drive. But getting it from here means you get the latest version. It's worth the download if you have even a slim doubt. Getting the scripting host and VBScript/JScript engines is easy (they're bundled), but you'll have to crawl through the links to find the help files and the sample code collection. And of course, to encourage you to upgrade, Windows 95 is no longer supported in the most recent versions. You'll need to get version 5.5 if you have Win95. No guarantee that's even going to work since 95 isn't supported any longer!

Essentials of VB Scripting After you install it, it becomes a collection of web pages (IE required) that cover how to use version 3 scripting (the early version without all the cool features) in all three ways: Server ASP, Client Web Pages, and the Windows Scripting Host. This is about a 30-minute overview of how to do the basics. If you've never done scripting, this is a good starting place.

Learn to Script  Microsoft's list of suggested resources for people wanting to learn scripting.

Windows 2000 Scripting Guide  If you don't buy the book, read it online.

Scripting Tools  WMI Browser  Script Debugger  ScriptCenter  Microsoft's essential tools to help you write sample scripts or see what you are doing.

Ian Morrish  Not just any scripting, he's exclusively a Windows Scripting Host kind of guy!

Clarence Washington Jr.  Every kind of scripting available under Windows. Kixtart, Perl, DOS, VBS, JavaScript, and yes, WSH.

Guenter Born  A grab bag of scripting fixes and tips. And my favorite: How to use Microsoft VB5CCE to write your own controls.

Alex Angelopoulos  Alex has a handy "Scripting Mini-FAQ" and a selection of scripts that tend to be a bit more advanced than mine.

News:Vbscript  If you have a question, it's already been asked and answered here.

News:Wsh  Ummm... Or here.
Script Editors:

It seems that there is no "native" editor for the Windows Scriping Host. You can borrow the VBA or VBS editor in a Microsoft Office product or use a .NET editor in Visual Studio or even use the web page editor in something else. Things like that work pretty good, but very little really understands WSH (Windows Scripting Host). So knowing of an editor that can be configured to support at least some part of scripting is handy. I offer these suggestions.

Primal SCRIPT $179 -- It costs more, but it's worth it. I bought it and use it every day. Designed from the ground up to support the Windows Scripting Host with syntax highlighting, parameter help, intellisense for VBScript and JScript, built-in object browser, support for WSC and WSH files, and more. Type "Wscript", hit a period, and up pops a list of all methods and properties. Type "MsgBox", hit a space key, and see the correct usage with all parameters right above where you are typing. The coolest thing is that it even supports intellisense for objects with late binding (you know, "CreateObject"). Even VB doesn't do that! Don't take my word, download the demo and see for yourself. You'll be stunned. Also supports Perl, Java, Tcl, Rexx, Python, Html, SQL, Batch, Awk, C, C++, Kixtart, and Pascal.

Microsoft Visual Studio  FREE  -- Why would anybody use a pirated copy of VS when Microsoft gives away perfectly good beta versions for free? VS doesn't understand the Windows Scripting Host, but it supports all other objects and the VBS language with late binding intellisense, code completion, and parameter help. And it has a great integrated debugger (don't use the generic scripting debugger if you have the VS debugger).

Microsoft Office VBA / MSE  --  If you have any of the Microsoft Office applications, you've got a usable script editor. Sort of.  Neither VBA (the Visual Basic for Apllications editor) or MSE (the Microsoft Script Editor) is perfect, but both have a good object browser. VBA is very similar to VBS, and VBA can fake WSH if you add the appropriate references. MSE understands VBS, but both VBA and MSE require too much effort for daily use.

Adersoft  $30 -- Separate versions for VBS and JS files. Has intellisense, parameter help, auto-capitalization. Does not support any other languages

SciTE  FREE -- Supports almost every language. Extendable, configurable, and programmable so you can use it to build your own editor.  Mostly color-coding of keywords, but integrates with most command-line build/run tools (like cscript) so it acts like a debugger too! See example customization and extensions for VBS/WSF here.

EditPlus $30 -- Syntax highlighting and code completion. Extendable to any language.

ScriptBuilder $139 -- Primarily a script editor for web pages. Syntax highlighting, online language reference.

CodeMax FREE -- Syntax highlighting. Supports VB, C/C++, Java, SQL, Pascal, and Basic. Includes an ActiveX object you can use to build your own code editor.

Vim FREE -- Syntax highlighting. Supports virtually all languages or any conceivable text formatting scheme. Extendable to additional keywords or languages. The UNIX origins are very apparent -- everything happens in a bland terminal window. Not all versions are stable under Windows.


Writing Your First Script

Start up Notepad. Enter this text:
MsgBox "Hello World!"
Save it as "HelloWorld.vbs" (Or any name with a .vbs extension. You need to save it with the quotes if you are using the default Windows behavior of hiding file extensions). Open up Explorer, find the file you just saved, and double-click it. Yes, it's that easy.

Try another simple one: Again start up Notepad, but enter this text:
strMyName = InputBox ("Enter your name")
MsgBox strMyName & " is my master!"
Again, save it (any name with a .vbs extension) and double-click it. Easy.

From here, you just need to read the help files (After you FIND the help files on Microsoft's site!) on Visual Basic Scripting and the Windows Scripting Host to see what other things you can do. Also check out the sample code Microsoft provides! Search your C: drive for all "*.vbs" files if you're not sure where they are. By far the coolest thing about scripting is how it can control Excel, Word, or most any other ActiveX program. Once I saw the "chart.vbs" sample Microsoft provided, I was hooked!


Debugging Your Scripts

When it comes to debugging the scripts you create, I have two tips for you.

      First, when your script fails, the Windows Scripting Host will tell you the line number, column number, and a description of the error. The error it reports gives you a good starting point, but trying to count down to line 132, column 43 to find it in your code is unworkable. Because... The default script editor (if you right-click a VBS file and select "Edit") is Notepad. And Notepad has no line or column counters. So you can buy a nice script editor like I did. Or use a fancy word processor or the old DOS program EDIT.COM. 

      For now, the handiest free item Microsoft has is the scripting debugger. The debugger works three ways:
      First, you can use it to open and edit your scripts. It's about as useful as Notepad in this respect. Pretty lame.
      Second, when you have an error, the debugger opens up and highlights the line where the error occurred. Well, if you have the original scripting Host that shipped with Win98 or NTSP6 it acts that way. If you upgraded your scripting host to the most recent version, the debugger won't start on an error unless you launched your script with the "//d" option (like "wscript //d myscript.vbs" or "start myscript.vbs //d". It won't let you do anything about the error in this mode other than running a command in the "Command Window". Getting better...
      Third, you can put the word "stop" in your script. When your script hits that "stop" line, it pauses and starts up the debugger. Again, that's only true on the original version of the scripting host. On the new version, you have to use the //d option to get it to recognize the "stop" word. In this mode, you can step through your code and use the full capabilities of the debugger.
      Fourth, you can start your script with the //x option (if you have the new version of the scripting host). That way it starts the script in the debugger automatically without waiting for an error or a stop word.
      So basically, unless you use "stop", "//d", or "//x", the debugger will do nothing more than frustrate you. I use the //x option so much I set up a right-click association for VBS files.
      CAUTION: Don't install the scripting debugger if you have Microsoft Visual Studio (VS) or VS .NET on your system. You don't need it! VS has a built-in debugger that works just fine (actually better!) on scripts. Installing multiple debuggers could tear a hole in the universe. Or in your computer. However, I've found that having VS6 and VS.NET on the same computer is no problem. You just get asked which debugger you want to use.

  If you've got this far, why not go the next step and look at some actual sample utilities written with Visual Basic Scripting for the Windows Scripting Host?

Lost? Look at the site map.

Bad links? Questions? Send me mail.

Ask Jeeves