A Windows Script File (WSF) is a file type used by the Microsoft Windows Script Host. It allows mixing the scripting languages JScript and VBScript within a single file, or other scripting languages such as Perl, Object REXX, Python, or Kixtart if installed by the user. These types of scripts may also be used to link many other external scripts together using a src parameter on the tag in a manner similar to HTML. Windows Script Files have the extension ".WSF". A WSF makes reference to each script module in a very basic XML hierarchy as shown below, adhering to those standards outside the tags. Literal use of "" or "" inside your tags and similar challenges can be handled by the use of CDATA, as shown within the examples. Error isolation A WSF may be useful for isolating errors. Its modular nature prevents one script reference from interfering with another. Here is a WSF example with one module that produces an error and one that does not: <?xml version="1.0" ?> <job id="Partially works"> <!-- This will not work --> <script language="VBScript"> ' <![CDATA[ WScript.echo 4/0 ' Oh, boy! You cannot divide by zero... ]]> </script> <!-- This will work... definitely... --> <script language="VBScript"> <![CDATA[ WScript.echo "Hello, Scripters!" & vbNewline & _ "Fantastic! It worked!" ' ]]> </script> </job> The first script module will produce a "divide by zero" error. Typically this would cause the script to end in the Windows Script Host but this modular method allows the script to continue and execute the second script module. Mixed language support A Windows Script File supports multiple languages, as described on the Windows Script Host reference. One of the features of this file format is that you may use more than one at once. This means you can have one scripting language use code from another scripting language. The most memorable example for long-time VBScript users is the use of Microsoft JScript to service a sort request for VBScript since it does not have a built-in sort function for an array of values. VBScript users may write their own sort method or borrow one from an existing object like an ADO (ActiveX Data Objects) Recordset or a .NET (.NET Framework) ArrayList, but the fastest way to sort an array is to use the method built into JScript. Here is a basic example of how that works: <?xml version="1.0" ?> <!--