Windows Script Host  

Utilizar archivos de comandos de Windows (.wsf)

Un archivo de comandos de Windows (*.wsf) es un documento de texto que contiene código de Lenguaje de marcado extensible (XML, Extensible Markup Language). Incluye varias características que mejoran la flexibilidad de las secuencias de comandos. Como los archivos de comandos de Windows no son específicos de ningún motor, pueden contener código de cualquier motor de secuencias de comandos compatible con Windows Script. Actúan como contenedor.

Con los archivos .wsf puede aprovechar las siguientes características al crear las secuencias de comandos:

Los archivos .wsf admiten Puede
Instrucciones Include Incorporar funciones de archivos de VBScript o JScript en un proyecto de Windows Script Host.
Múltiples motores Utilizar más de un lenguaje de secuencias de comandos en cada archivo.
Bibliotecas de tipos Agregar constantes al código.
Herramientas Modificar los archivos en cualquier editor XML.
Varios trabajos en un archivo Almacenar todo el código en una misma ubicación.

Instrucciones Include

Si tiene archivos .js y .vbs de proyectos anteriores de Windows Script Host, los archivos .wsf le permitirán utilizarlos con Windows Script Host. Un archivo .wsf encapsula una biblioteca de funciones que, a su vez, pueden utilizar múltiples archivos .wsf.

El siguiente ejemplo muestra un archivo .wsf que incluye un archivo JScript (fso.js), así como una función de VBScript que llama a una función (GetFreeSpace) del archivo incluido. También se muestra el contenido de fso.js.

<job id="IncludeExample">
   <script language="JScript" src="fso.js"/>
   <script language="VBScript">
      ' Obtiene el espacio libre en la unidad C:.
      s = GetFreeSpace("c:")
      WScript.Echo s
   <sScript>
</job> 

El archivo fso.js contiene:

function GetFreeSpace(drvPath) {
   var fs, d, s;
   fs = new ActiveXObject("Scripting.FileSystemObject");
   d = fs.GetDrive(fs.GetDriveName(drvPath));
   s = "Unidad  " + drvPath + " - " ;
   s += d.VolumeName;
   s += " Espacio libre: " + d.FreeSpace/1024 + " Kbytes";
   return s;
} 

Compatibilidad con múltiples motores

Como es posible que un único lenguaje de secuencias de comandos no disponga de todas las funciones que necesite, Windows Script Host permite combinar varios lenguajes en un mismo archivo .wsf. El siguiente ejemplo muestra un archivo .wsf que incluye código de VBScript y de PerlScript:

<job id="PERLandVBS">
   <script language="PerlScript">
      sub HolaEnPerl {
         my $cad = @_[0];
         $WScript->Echo($cad);
      }
   </script>

   <script language="VBScript">
      WScript.Echo "Esto es VBScript"
      HolaEnPerl "Esto es PERLScript"
   </script>
</job> 

Compatibilidad con bibliotecas de tipos

En el siguiente ejemplo, "MyComponent" se desarrolló con Microsoft Visual Basic 5.0. "MyComponent" define la constante MyError con la siguiente instrucción.

Public Const MyError = "No utiliza MyComponent correctamente"

La biblioteca de tipos está incluida en mycomponent.lib, que se instala en C:\MyComponent.

<job id="IncludeExample">
   <reference progid="MyComponent.MyClass">
   <script language="VBScript">
      Dim MyVar
      Set MyVar = CreateObject("MyComponent.MyClass")
      Currentreturn = MyVar.MyMethod
      If Currentreturn = False then
         WScript.Echo MyError
      End If
   </script>
</job> 

Compatibilidad con herramientas

Como el archivo .wsf está en formato XML, puede utilizar cualquier procesador de textos que admita archivos XML para modificar los archivos .wsf. Esto incluye procesadores de texto como el Bloc de notas.

Varios trabajos en un archivo

En lugar de guardar cada secuencia de comandos en un archivo diferente, puede incluirlas todas en un mismo archivo .wsf y dividirlas en trabajos diferentes. Después, puede ejecutar cada trabajo por separado mediante una sintaxis parecida a la del siguiente ejemplo, en el que "MyFirstJob" es el nombre del trabajo incluido en el archivo MyScripts.wsf.

CScript //Job:MyFirstJob MyScripts.wsf
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.