Skip to content

2. En contextos de ejecución para VBSCRIPT

2.1. Introducción

Un programa vbscript no se ejecuta directamente bajo Windows, sino en un contenedor que le proporciona un contexto de ejecución y un cierto número de objetos propios. Además, el programa vbscript puede utilizar objetos puestos a su disposición por el sistema Windows, objetos denominados objetos ActiveX.

En este documento utilizaremos dos contenedores: Host de secuencias de comandos de Windows comúnmente llamado WSH y el navegador Internet Explorer a veces denominado IE. Existen muchos otros. Por ejemplo, las aplicaciones de MS-Office son contenedores de un derivado de VB llamado VBA (Visual Basic for Applications). También hay muchas aplicaciones de Windows que permiten a sus usuarios ir más allá de los límites de la aplicación permitiéndoles desarrollar programas que se ejecutan dentro de la aplicación y utilizan los objetos específicos de la aplicación.

El contenedor en el que se ejecuta el programa vbscript desempeña un papel fundamental:

  • los objetos puestos a disposición del programa vbscript por el contenedor cambian de un contenedor a otro. Por ejemplo, WSH proporciona a un programa vbs un objeto llamado WScript que da acceso, por ejemplo, a los recursos compartidos de red y a las impresoras de la máquina anfitriona. IE proporciona al programa vbs un objeto llamado documento que representa todo el documento HTML que se está visualizando. El programa vbs puede entonces actuar sobre este documento. Excel proporciona un programa VBA con objetos que representan libros de trabajo, hojas de libros de trabajo, gráficos, etc.... de hecho todos los objetos manejados por Excel.
  • aunque los objetos de un contenedor dan a un programa vbscript toda su potencia, a veces puede limitar ciertas áreas. Por ejemplo, un programa vbscript que se ejecuta en el navegador IE no puede acceder al disco de la máquina anfitriona, por razones de seguridad.

Por lo tanto, cuando hablamos de programación vbscript, tenemos que indicar en qué contenedor el se ejecuta el programa.

En Windows, vbscript no es el único lenguaje que puede utilizarse en contenedores WSH o IE. También puede utilizar JScript (=JavaScript), PerlScript (=Perl), Python, etc. A primera vista, muchos de estos lenguajes parecen superiores a vbscript. Sin embargo, vbscript tiene algunas ventajas importantes:

  • VB y sus variantes VBSCRIPT y VBA se utilizan ampliamente en máquinas Windows. El conocimiento de este lenguaje es esencial.
  • Son más los objetos que puede utilizar un programa que el lenguaje que utiliza lo que lo hace potente. Muchos de estos objetos los proporcionan los contenedores, no los propios lenguajes.

Una desventaja de VBSCRIPT es que no es portable a sistemas distintos de Windows, como Unix. Sus competidores Javascript, Perl y Python sí lo son. Si necesita trabajar en sistemas heterogéneos, puede ser útil, o incluso esencial, utilizar el mismo lenguaje en los distintos sistemas.

2.2. El contenedor WSH

El contenedor WSH (Windows Scripting Host) permite ejecutar en Windows programas escritos en varios lenguajes: vbscript, javascript, perlscript, python, etc. Existe una norma que debe cumplirse para que un lenguaje pueda utilizarse dentro de WSH. Cualquier lenguaje que cumpla esta norma es candidato a ser ejecutado en WSH. Es concebible que la lista anterior de lenguajes que se ejecutan en WSH pueda ampliarse. Un contenedor proporciona a los programas que ejecuta objetos que les confieren su verdadera potencia. Esto tiende a borrar las diferencias entre lenguajes, ya que todos utilizan el mismo conjunto de objetos. Utilizar un lenguaje en lugar de otro puede convertirse entonces en una simple cuestión de gusto 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, normalmente llamado %windir% :

C:\ >echo %windir%
C:\WINDOWS

C:\>dir c:\windows\wscript.exe
WSCRIPT  EXE       123 280  19/09/01  11:54 wscript.exe

L'el ejecutable cscript.exe se encuentra en %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 en cscript significa consola. Un script puede ser ejecutado tanto por wscript como por cscript. La diferencia radica en la forma en que se muestran los mensajes en la pantalla:

  • wscript los muestra en una ventana
  • cscript los muestra en pantalla

Aquí tienes un script coucou.vbs que muestra hola en la pantalla:

Image

Abra una ventana DOS y ejecútela sucesivamente con wscript y cscript :

DOS>wscript coucou.vbs

Image

DOS>cscript coucou.vbs

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

coucou

La diferencia entre los dos modos se muestra claramente más arriba. En este documento, utilizaremos el modo consola casi exclusivamente cscript. Este modo es adecuado para las llamadas aplicaciones "por lotes", es decir, aplicaciones que no interactúan con un usuario en el teclado. Hay dos puntos a tener en cuenta en los resultados anteriores:

  1. Hemos supuesto que los ejecutables wscript.exe y cscript.exe están ambos en el "PATH" de la máquina, lo que significa que pueden lanzarse simplemente tecleando sus nombres. Si no fuera así, habría tenido que escribir :
DOS>c:\windows\wscript coucou.vbs
DOS>c:\windows\command\cscript coucou.vbs
  1. Tenga en cuenta que la versión de wsh utilizada en este ejemplo y en el resto del documento es la versión 5.6.
  1. El archivo fuente script tiene el sufijo .vbs. Es el sufijo de un script vbscripta script javascript se designa mediante el sufijo .js.

El programa cscript tiene varias opciones de lanzamiento que pueden obtenerse ejecutando cscript sin argumentos :

DOS>cscript

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Utilisation : CScript scriptname.extension [option...] [arguments...]

Options:
//B         batch : Supprime l'visualización de mensajes de guión y errores
//D         Activer le débogage
//E:engine  Utiliser le moteur pour l'ejecución de script
//H:CScript Remplace l'entorno de ejecución de scripts por defecto por CScript.exe
//H:WScript tRemplace l'entorno de ejecución de scripts por defecto WScript.exe (por defecto)
//I         Mode interactif (par défaut, contraire de l'opción //B)
//Job :xxxx    Exécuter une tâche WSF
//Logo      Afficher un logo (default)
//Nologo    Empêcher l'visualización del logotipo: no se muestra ningún banner durante el tiempo de ejecución
//S         Enregistrer les options de ligne de commande actuelles pour cet utilisateur
//T:nn      Durée d'ejecución en segundos: Tiempo máximo permitido para la ejecución de un script
//X         Exécuter un script dans le débogueur

El punto //nologo suprime la visualización del banner wsh:

C:\>cscript //nologo coucou.vbs
coucou

2.3. La forma de un script WSH

Acabamos de ver el primer script : coucou.vbs

Image

Hemos indicado que el sufijo .vbs en el archivo era un script vbscript. Esto no es una obligación. Podríamos haber puesto el script en un archivo sufijo .wsf en la siguiente forma más compleja :

Image

Ejecutando este script se obtiene lo siguiente:

C:\>cscript //nologo coucou2.wsf
coucou

Un script WSH puede mezclar idiomas:

Image

Ejecutando este script se obtiene lo siguiente:

1
2
3
4
C:\>cscript //nologo coucou3.wsf
coucou (vbscript)
coucou (javascript)
coucou (perlscript)

Nos centraremos en los siguientes puntos:

  1. El contenedor WSH no está vinculado a ningún idioma. Un script wsh puede mezclar idiomas en un archivo de sufijo .wsf
  2. El script queda entonces enmarcado por las etiquetas <job id="..."> .... </job>
  3. Dentro de la aplicación (=job), los lenguajes utilizados por las diferentes porciones de código se etiquetan mediante <script language="...."> .... </script>
  4. Este lenguaje de marcado tiene un nombre: XML para eXtendido Markup Language. XML no define ninguna etiqueta, sino reglas de disposición de etiquetas. Por lo tanto, aquí deberíamos decir que el lenguaje de marcado utilizado en un wsh script sigue la norma XML.

En el futuro, sólo utilizaremos vbscript en los archivos .vbs.

2.4. El objeto WSCRIPT

El contenedor WSH proporciona a los scripts que ejecuta un objeto llamado wscript. Un objeto tiene propiedades y métodos :

Un objeto Obj tiene propiedades Pi que fijan su estado. Así, un objeto termómetro puede tener una propiedad temperatura. Esta propiedad es un aspecto 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 los agentes externos

  • conozca su estado
  • cambiar su estado

Así que nuestro termómetro, si es electrónico, podría tener un método de encender que lo pondría en marcha, otra apagar que la extinguiría, otra mostrar que mostraría la temperatura de equilibrio una vez alcanzada. En términos de programación, un método es una función que puede aceptar argumentos y devolver resultados.

En Vbscript, las propiedades Pi de un objeto Obj se anotan como Obj.Pi y los métodos Mj se denominan Obj.Mj. El objeto WSH wscript es un objeto importante por los métodos que pone a disposición de los scripts. Su método echo se utiliza para mostrar un mensaje. La sintaxis de este método es la siguiente:

wscript.echo arg1, arg2, ..., argn

Valores de los argumentos argi se muestran en una ventana (ejecutado por wscript) o en la pantalla (ejecutado por cscript bajo DOS).

2.5. El contenedor de Internet Explorer

Anteriormente escribimos que Internet Explorer podía ser un contenedor para un vbscript script. Vamos a demostrarlo con un ejemplo sencillo. A continuación se muestra una página HTML (HyperText Markup Language) llamado coucou2.htm que no contenga script vbscript.

21

Image

Su carga directa por Internet Explorer (Archivo/Abrir) da los siguientes resultados:

El contenido del fichero coucou2.htm nos muestra que HTML es un lenguaje de marcado. Conocer el lenguaje HTML significa conocer estas etiquetas. Su propósito principal es indicar al navegador cómo mostrar un documento. HTML no sigue exactamente el estándar XML, pero se le aproxima.

En coucou2.htmhay dos datos para representar, etiquetados como 1 y 2. También los hemos representado en la pantalla. Esta es la <title>...</title> lo que provocó que la información 1 se colocara en la barra de título del navegador y la etiqueta <body>..</body> lo que dio lugar a que la información 2 se colocara en la parte del documento del navegador.

No profundizaremos más en el lenguaje HTML. Vamos a modificar el coucou2.htm insertando un vbscript script y llamándolo coucou1.htm :

Image

El vbscript script se ha colocado en la carpeta <head>...</head>. Podría haberse colocado en otro sitio. Muestra "cuco" cuando la página se carga por primera vez. Aquí, el navegador debe ser Internet Explorer porque sólo este navegador es por defecto contenedor de scripts vbscript. La visualización resultante es la siguiente:

Image

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

Image

El script ejecutado fue el siguiente:

Image

Mientras que el contenedor WSH proporcionaba al script un objeto llamado wscript método de visualización echoaquí IE proporciona a script un objeto ventana método de visualización alerta. Para mostrar "cuco", escriba wscript.echo "peekaboo en WSH y window.alert "peekaboo en IE. También podemos demostrar aquí que, de hecho, se pueden utilizar varios idiomas en el contenedor IE. Tomemos el ejemplo ya presentado en WSH dentro de una página coucou3.htm :

Image

Cuando IE carga esta página, primero muestra tres ventanas de información:

antes de mostrar la página final:

Image

2.6. Ayuda de WSH

WSH viene con un sistema de ayuda que normalmente se encuentra en la carpeta "C:\Program Files\Microsoft Windows ScriptScriptDocs". para la version 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 ser útil tener un acceso directo en el escritorio.

Una vez lanzado, el resultado es algo parecido a lo siguiente:

Image

Incluye ayuda para el contenedor WSH así como ayuda para los lenguajes vbscript y javascript. Se trata de una herramienta esencial tanto para principiantes como para programadores experimentados. Hay varias formas de trabajar con esta ayuda:

  • no sabes realmente lo que buscas. Sólo quiere saber qué se le ofrece. La ficha Contenido de arriba. Por ejemplo, puede ver lo que está disponible para vbscript :

Image

La sección de ayuda de VBscript contiene gran cantidad de información que no se incluye en este documento.

  • puede buscar algo específico, por ejemplo, cómo utilizar la función msgbox de VBscript. A continuación, utilice el Buscar en :

Image

La ayuda muestra todas las rúbricas relacionadas con la palabra buscada. En general, los primeros títulos propuestos son los más pertinentes. En este caso, el primer título propuesto es el correcto. Basta con hacer doble clic sobre él para obtener la información correspondiente a este epígrafe:

Image