2. Los entornos de ejecución de VBSCRIPT
2.1. Introduction
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 que el sistema Windows pone a su disposición, denominados objetos ActiveX.
![]() |
En este documento, utilizaremos dos contenedores: Windows Scripting Host, comúnmente denominado WSH, y el navegador Internet Explorer, al que en lo sucesivo a veces nos referiremos como IE. Existen muchos otros. Por ejemplo, las aplicaciones de MS-Office son contenedores para una variante de VB llamada VBA (Visual Basic para Aplicaciones). Además, existen numerosas aplicaciones de Windows que permiten a sus usuarios superar las limitaciones del sistema al permitirles 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 de la máquina anfitriona. Por su parte, IE pone a disposición del programa VBS un objeto llamado document que representa la totalidad del documento HTML que se está visualizando. El programa VBS podrá entonces manipular este documento. Excel, por su parte, pone a disposición de un programa VBA objetos que representan libros, hojas de trabajo, gráficos, etc.; en resumen, todos los objetos que maneja Excel.
- Si bien los objetos de un contenedor le brindan toda su potencia a un programa de VBScript, en ocasiones pueden limitar ciertas áreas. Por ejemplo, un programa de VBScript ejecutado en el navegador IE no puede acceder al disco de la máquina anfitriona, por razones de seguridad.
Por lo tanto, cuando se habla de programación en VBScript, es necesario 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 cuenta con importantes ventajas:
- VB y sus variantes VBSCRIPT y VBA están muy extendidas en las computadoras con Windows. Conocer este lenguaje parece indispensable.
- Es más bien la variedad de objetos que un programa puede utilizar, más que el lenguaje en sí, lo que determina su potencia. Sin embargo, muchos de estos objetos son proporcionados por los contenedores y no por los lenguajes mismos.
Una desventaja de VBSCRIPT es que no es portátil a un sistema distinto de Windows, como por ejemplo Unix. Sus competidores, JavaScript, Perl y Python, sí lo son. Si se debe trabajar en sistemas heterogéneos, puede ser 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 un estándar que debe cumplirse para que un lenguaje pueda utilizarse dentro de WSH. Cualquier lenguaje que cumpla con 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 una serie de objetos que les otorgan 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 así en una simple cuestión de preferencia personal 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, que por lo general se llama %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 la forma en que se muestran los mensajes en pantalla:
- wscript los muestra en una ventana
- cscript los muestra en la pantalla
A continuación se muestra un script coucou.vbs que muestra coucou en pantalla:
![]()
Abramos una ventana DOS y ejecutémoslo sucesivamente con wscript y cscript:

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 observa claramente la diferencia entre los dos modos. En este documento, utilizaremos casi exclusivamente el modo de consola cscript. Este 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 identifica a un script vbscript, mientras que un script javascript se identifica con la extensión .js.
El programa cscript cuenta con diversas opciones de ejecución que se obtienen al ejecutar cscript sin argumentos:
El argumento //nologo desactiva la visualización del banner de wsh:
2.3. La estructura de un script WSH
Acabamos de ver un primer script: coucou.vbs
![]()
Hemos indicado que el sufijo .vbs del archivo hace referencia a un script vbscript. Esto no es obligatorio. Podríamos haber colocado el script en un archivo con el sufijo .wsf de la siguiente forma, más compleja:

Al ejecutar este script se obtiene lo siguiente:
Un script WSH puede mezclar idiomas:

Al ejecutar este script se obtiene lo siguiente:
Tomaremos en cuenta los siguientes puntos:
- El contenedor WSH no está vinculado a un lenguaje. Un script wsh puede mezclar lenguajes en un archivo con extensión .wsf
- El script está 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 etiquetas tiene un nombre: XML, que significa «eXtended Markup Language». XML no define ninguna etiqueta, sino reglas de disposición de las etiquetas. Por lo tanto, en este caso deberíamos decir que el lenguaje de marcado utilizado en un script wsh sigue el estándar XML.
De ahora en adelante, 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 llamado wscript. Un objeto tiene propiedades y métodos:
![]() |
Un objeto Obj tiene propiedades Pi que definen 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
- modificar 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 recibir 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 de argi se muestran entonces en una ventana (ejecución mediante wscript) o en la pantalla (ejecución mediante cscript bajo DOS).
2.5. El contenedor Internet Explorer
Anteriormente mencionamos que Internet Explorer puede funcionar como contenedor para un script VBScript. Veamos esto con un ejemplo sencillo. A continuación se muestra una página HTML (HyperText Markup Language) llamada coucou2.htm que no contiene ningún script VBScript.
21

Al cargarla directamente en Internet Explorer (Fichier/Ouvrir), se obtienen 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 a él.
En coucou2.htm, hay dos datos que se deben mostrar, marcados como 1 y 2. También los hemos mostrado así en la visualización que se ha generado. La etiqueta <title>...</title> fue la que hizo que la información 1 se colocara en la barra de título del navegador, y la etiqueta <body>..</body> fue la que hizo que la información 2 se colocara en el cuerpo del documento del navegador.
No profundizaremos más en el análisis del lenguaje HTML. Modifiquemos el archivo coucou2.htm introduciendo un script de VBScript y llamémoslo ahora coucou1.htm:

El script VBScript se ha colocado dentro de 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. El resultado que se obtiene es el siguiente:

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

El script ejecutado fue el siguiente:
![]()
Mientras que el contenedor WSH ponía a disposición del script un objeto llamado wscript que permitía realizar visualizaciones con 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 idiomas 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, primero se muestran tres ventanas informativas:
![]() | ![]() | ![]() |
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». Solo hay que hacer doble clic en este archivo para acceder a la ayuda. Puede ser útil tener un acceso directo en el escritorio.
Una vez ejecutado, se ve algo como lo siguiente:

Ahí 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 qué estamos buscando. Simplemente queremos descubrir lo que se ofrece. En ese caso, se puede utilizar la pestaña Sommaire que se muestra arriba. Por ejemplo, podemos ver lo que se ofrece para VBScript:

En la ayuda de VBscript encontrarás mucha información que no aparece en este documento.
- Puedes buscar algo específico, por ejemplo, cómo usar la función msgbox de VBscript. Para ello, usa la pestaña Rechercher:

La ayuda muestra todos los temas relacionados con la palabra buscada. Por lo general, los primeros temas sugeridos son los más relevantes. Este es el caso aquí, donde el primer tema sugerido es el correcto. Solo tienes que hacer doble clic en él para ver la información de ese tema:






