2. Los contextos de ejecución de VBSCRIPT
2.1. Introducción
Un programa vbscript no se ejecuta directamente en Windows, sino en un contenedor que le proporciona un contexto de ejecución y una serie de objetos propios. Además, el programa vbscript puede utilizar objetos puestos a su disposición por el sistema Windows, denominados objetos ActiveX.
![]() |
En este documento utilizaremos dos contenedores: Windows Scripting Host, comúnmente denominado WSH, y el navegador Internet Explorer, denominado en lo sucesivo IE. Existen muchos otros. Así, las aplicaciones de MS-Office son contenedores para un derivado de VB denominado VBA (Visual Basic para Aplicaciones). Por otra parte, existen numerosas aplicaciones de Windows que permiten a sus usuarios superar las limitaciones del sistema operativo, permitiéndoles desarrollar programas que se ejecutan dentro de la aplicación y utilizan los objetos propios de esta.
El contenedor en el que se ejecuta el programa VBScript desempeña un papel fundamental:
- los objetos que el contenedor pone a disposición del programa VBScript varían de un contenedor a otro. Así, WSH pone a disposición de un programa VBS un objeto llamado WScript que da acceso, por ejemplo, a los recursos compartidos y a las impresoras de red del equipo host. Por su parte, IE pone a disposición del programa VBS un objeto denominado document que representa la totalidad del documento HTML visualizado. El programa VBS podrá entonces actuar sobre este documento. Excel pone a disposición de un programa VBA objetos que representan libros, hojas de libros, gráficos, etc... de hecho, todos los objetos manipulados por Excel.
- Si bien los objetos de un contenedor aportan toda su potencia a un programa VBScript, en ocasiones pueden limitar algunos de sus ámbitos. Así, un programa VBScript ejecutado en el navegador IE no puede acceder al disco del equipo host, por motivos de seguridad.
Por lo tanto, cuando se habla de programación VBScript, hay que indicar en qué contenedor se ejecuta el programa.
En Windows, VBScript no es el único lenguaje que se puede utilizar en los contenedores WSH o IE. Por ejemplo, se puede utilizar JScript (=JavaScript), PerlScript (=Perl), Python, etc. A primera vista, muchos de estos lenguajes parecen superiores a VBScript. Sin embargo, este último tiene importantes ventajas:
- VB y sus variantes VBSCRIPT y VBA están muy extendidas en los equipos Windows. Conocer este lenguaje parece indispensable.
- Es más el conjunto de objetos que puede utilizar un programa que el lenguaje en sí lo que determina su potencia. Ahora bien, muchos de estos objetos son proporcionados por los contenedores y no por los propios lenguajes.
Una desventaja de VBSCRIPT es que no es portátil a un sistema distinto de Windows, por ejemplo, Unix. Sus competidores, como JavaScript, Perl y Python, sí lo son. Si hay que trabajar en sistemas heterogéneos, puede resultar interesante, o incluso indispensable, utilizar el mismo lenguaje en los distintos sistemas.
2.2. El contenedor WSH
El contenedor WSH (Windows Scripting Host) permite ejecutar, dentro de Windows, programas escritos en diversos lenguajes: vbscript, javascript, perlscript, python, etc. Existe una norma que debe respetarse para que un lenguaje pueda utilizarse dentro de WSH. Cualquier lenguaje que cumpla esta norma puede ejecutarse en WSH. Es posible que la lista anterior de lenguajes que se ejecutan en WSH se amplíe. Un contenedor pone a disposición de los programas que ejecuta unos objetos que les confieren su verdadero poder. Esto tiende a difuminar las diferencias entre lenguajes, ya que todos utilizan entonces el mismo conjunto de objetos. Utilizar un lenguaje en lugar de otro puede convertirse entonces en una simple cuestión de gustos más que de rendimiento.
La ejecución de un programa en WSH se realiza mediante dos ejecutables: wscript.exe y cscript.exe. wscript.exe se encuentra normalmente en el directorio de instalación de Windows, generalmente denominado %windir%:
C:\ >echo %windir%
C:\WINDOWS
C:\>dir c:\windows\wscript.exe
WSCRIPT EXE 123 280 19/09/01 11:54 wscript.exe
L'exécutable cscript.exe se trouve lui sous %windir%\command :
C:\>dir c:\windows\cscript.* /s
Répertoire de C:\WINDOWS\COMMAND
CSCRIPT EXE 102 450 26/06/01 17:49 cscript.exe
La «w» de wscript significa windows y la «c» de cscript significa console. Un script se puede ejecutar indistintamente con wscript o cscript. La diferencia radica en el modo de visualización de los mensajes en pantalla:
- wscript los muestra en una ventana
- cscript los muestra en pantalla
Aquí hay un script coucou.vbs que muestra coucou en pantalla:
![]()
Abramos una ventana DOS y ejecutémoslo sucesivamente con wscript y cscript:
DOS>wscript coucou.vbs

DOS>cscript coucou.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
coucou
En lo anterior se aprecia claramente la diferencia entre los dos modos. En este documento utilizaremos casi exclusivamente el modo consola cscript. Es el modo adecuado para las aplicaciones denominadas «por lotes», es decir, aquellas que no requieren interacción del usuario mediante el teclado. Cabe destacar dos puntos en los resultados anteriores:
- Se ha supuesto que los ejecutables wscript.exe y cscript.exe se encontraban ambos en el directorio «PATH» de la máquina, lo que permite ejecutarlos simplemente escribiendo sus nombres. Si no fuera así, habría que escribir aquí:
- Cabe señalar que la versión de wsh utilizada en este ejemplo y en el resto del documento es la versión 5.6.
- El archivo fuente del script tiene la extensión .vbs. Esta es la extensión que designa un script vbscript, mientras que un script javascript se designa con la extensión .js.
El programa cscript tiene varias opciones de ejecución que se obtienen al ejecutar cscript sin argumentos:
El argumento //nologo suprime la visualización del banner de wsh:
2.3. La forma de un script WSH
Acabamos de ver un primer script: coucou.vbs
![]()
Hemos indicado que el sufijo .vbs del archivo designaba un script vbscript. Esto no es obligatorio. Podríamos haber colocado el script en un archivo con el sufijo .wsf con la siguiente forma, más compleja:

La ejecución de este script da como resultado lo siguiente:
Un script WSH puede mezclar lenguajes:

La ejecución de este script da como resultado lo siguiente:
Recordaremos los siguientes puntos:
- El contenedor WSH no está vinculado a ningún lenguaje. Un script wsh puede mezclar lenguajes en un archivo con la extensión .wsf
- El script queda entonces enmarcado entre las etiquetas <job id="..."> ... </job>
- Dentro de la aplicación (=job), los lenguajes utilizados por las diferentes partes del código están delimitados por <script language="...."> .... </script>
- Este lenguaje de marcado tiene un nombre: XML, que corresponde a eXtended Markup Language. XML no define ninguna etiqueta, sino reglas de disposición de las mismas. Por lo tanto, en este caso deberíamos decir que el lenguaje de marcado utilizado en un script wsh sigue el estándar XML.
A partir de ahora, utilizaremos exclusivamente VBScript en archivos .vbs.
2.4. El objeto WSCRIPT
El contenedor WSH pone a disposición de los scripts que ejecuta un objeto denominado wscript. Un objeto tiene propiedades y métodos:
![]() |
Un objeto Obj tiene propiedades Pi que determinan su estado. Así, un objeto thermomètre puede tener una propiedad température. Esta propiedad es uno de los aspectos del estado del termómetro. Otro podría ser la temperatura máxima Tmax que puede soportar.
El objeto Obj puede tener métodos Mj que permiten a agentes externos:
- conocer su estado
- cambiar su estado
Así, nuestro termómetro, si es electrónico, podría tener un método allumer que lo encendiera, otro éteindre que lo apagara, y otro afficher que mostrara la temperatura de equilibrio una vez alcanzada. En términos de programación, un método es una función que puede admitir argumentos y devolver resultados.
En VBScript, las propiedades Pi de un objeto Obj se denotan como Obj.Pi y los métodos Mj se denotan como Obj.Mj. El objeto wscript de WSH es un objeto importante por los métodos que pone a disposición de los scripts. Así, su método echo permite mostrar un mensaje. La sintaxis de este método es la siguiente:
Los valores de los argumentos argi se muestran entonces en una ventana (ejecución mediante wscript) o en pantalla (ejecución mediante cscript bajo DOS).
2.5. El contenedor Internet Explorer
Anteriormente hemos mencionado que Internet Explorer puede actuar como contenedor de un script VBScript. Veámoslo con un ejemplo sencillo. A continuación se muestra una página HTML (HyperText Markup Language) denominada coucou2.htm que no contiene ningún script VBScript.
21

Su carga directa mediante Internet Explorer (Fichier/Ouvrir) da los siguientes resultados:
![]() |
El contenido del archivo coucou2.htm nos muestra que HTML es un lenguaje de marcado. Conocer el lenguaje HTML es conocer estas etiquetas. Su objetivo principal es indicar al navegador cómo mostrar un documento. HTML no sigue exactamente el estándar XML, pero se acerca bastante.
En coucou2.htm, hay dos datos que representar, señalados con 1 y 2. Los hemos representado también en la visualización que se ha realizado. La etiqueta <title>...</title> hizo que la información 1 se colocara en la barra de título del navegador y la etiqueta <body>..</body> hizo que la información 2 se colocara en la parte del documento del navegador.
No profundizaremos más en el estudio del lenguaje HTML. Modifiquemos el archivo coucou2.htm introduciendo en él un script vbscript y llamémoslo ahora coucou1.htm:

El script VBScript se ha colocado en la etiqueta <head>...</head>. Se podría haber colocado en otro lugar. Muestra «hola» al cargar la página por primera vez. En este caso, el navegador debe ser Internet Explorer, ya que solo este navegador es, por defecto, un contenedor para scripts VBScript. La visualización obtenida es entonces la siguiente:

seguido de la visualización normal de la página:

El script ejecutado era el siguiente:
![]()
Mientras que el contenedor WSH ponía a disposición del script un objeto denominado wscript que permitía realizar visualizaciones mediante su método echo, aquí IE pone a disposición del script un objeto window que permite realizar visualizaciones con el método alert. Así, para mostrar «hola», se escribe wscript.echo «hola» en WSH y window.alert «hola» en IE. Aquí también se puede demostrar que, de hecho, se pueden utilizar varios lenguajes en el contenedor IE. Retomamos el ejemplo ya presentado en WSH dentro de una página coucou3.htm:

Al cargar esta página mediante IE, se muestran en primer lugar tres ventanas de información:
![]() | ![]() | ![]() |
antes de mostrar la página final:

2.6. La ayuda de WSH
WSH incluye un sistema de ayuda que suele encontrarse en la carpeta «C:\Archivos de programa\Microsoft Windows Script\ScriptDocs». Para la versión 5.6 de WSH, el archivo de ayuda se llama «SCRIPT56.CHM». Basta con hacer doble clic en este archivo para acceder a la ayuda. Puede resultar práctico tener un acceso directo en el escritorio.
Una vez ejecutado, se ve algo como lo siguiente:

En él se encuentra la ayuda del contenedor WSH, pero también la de los lenguajes VBScript y JavaScript. Es una herramienta indispensable tanto para principiantes como para programadores experimentados. Hay varias formas de trabajar con esta ayuda:
- no sabemos muy bien lo que buscamos. Simplemente queremos descubrir lo que se ofrece. En ese caso, se puede utilizar la pestaña Sommaire anterior. Por ejemplo, podemos ver lo que se ofrece para VBScript:

En la ayuda de VBscript encontrará mucha información que no aparece en este documento.
- Puede buscar algo concreto, por ejemplo, cómo utilizar la función msgbox de VBscript. En ese caso, utilice la pestaña Rechercher:

La ayuda muestra todos los temas relacionados con la palabra buscada. Por lo general, los primeros temas propuestos son los más relevantes. Este es el caso aquí, donde el primer tema propuesto es el correcto. Basta con hacer doble clic en él para obtener la información de este tema:






