VBScript ( Microsoft Visual Basic Scripting Edition) es un lenguaje de programación obsoleto para crear scripts en Microsoft Windows utilizando el Modelo de objetos componentes (COM) basado en Visual Basic clásico y Active Scripting .
VBScript era popular entre los administradores de sistemas para gestionar computadoras y automatizar muchos aspectos del entorno informático.
Los entornos de ejecución de VBScript incluyen: Windows Script Host (WSH), Internet Explorer (IE) e Internet Information Services (IIS). [1] El entorno de ejecución se puede integrar en otros programas a través de Microsoft Script Control ( msscript.ocx ).
VBScript se ha instalado de forma predeterminada en cada versión de escritorio de Microsoft Windows desde Windows 98 ; [2] en Windows Server desde Windows NT 4.0 Option Pack ; [3] y opcionalmente con Windows CE (dependiendo del dispositivo en el que esté instalado).
En octubre de 2023, Microsoft anunció que VBScript estaba obsoleto. [4] En mayo de 2024, se anunció un cronograma de desuso de varias fases con una eliminación planificada para 2027 o más adelante. [5]
VBScript comenzó como parte de Microsoft Windows Script Technologies, lanzado en 1996. Esta tecnología (que también incluía JScript ) estaba inicialmente dirigida a los desarrolladores web. Durante un período de poco más de dos años, VBScript avanzó de la versión 1.0 a la 2.0, y durante ese tiempo ganó el apoyo de los administradores de sistemas de Windows que buscaban una herramienta de automatización más poderosa que el lenguaje por lotes desarrollado por primera vez a principios de la década de 1980. [6] El 1 de agosto de 1996, se lanzó Internet Explorer con características que incluían VBScript. [7]
En la versión 5.0, la funcionalidad de VBScript se incrementó con nuevas características que incluyen expresiones regulares ; clases ; la declaración With ; [8] las funciones Eval , Execute y ExecuteGlobal para evaluar y ejecutar comandos de script creados durante la ejecución de otro script; un sistema de puntero de función a través de GetRef, [9] y soporte para COM distribuido (DCOM).
En la versión 5.5, se agregaron SubMatches [10] a la clase de expresión regular en VBScript, para permitir finalmente a los autores de scripts capturar el texto dentro de los grupos de la expresión. Esa capacidad ya estaba disponible en JScript.
Con la llegada de .NET Framework , el equipo de scripting decidió implementar soporte futuro para VBScript dentro de ASP.NET para el desarrollo web, [11] y por lo tanto no se desarrollarían nuevas versiones del motor VBScript. De ahora en adelante, sería respaldado por el equipo de ingeniería de mantenimiento de Microsoft , que es responsable de las correcciones de errores y las mejoras de seguridad. Para los administradores de sistemas de Windows, Microsoft sugiere migrar a Windows PowerShell , ya que VBScript está obsoleto y eventualmente se eliminará de Windows.
En una página web cargada por Internet Explorer , VBScript funciona de manera similar a JavaScript . El código VBScript en el HTML es lógica que interactúa con el Modelo de objetos de documento (DOM) de la página, lo que permite una funcionalidad que no es posible solo con HTML. Sin embargo, otros navegadores web como Chrome , Firefox y Opera no admiten VBScript. Por lo tanto, cuando se requieren scripts del lado del cliente y compatibilidad entre navegadores, los desarrolladores generalmente eligen JavaScript debido a su amplia compatibilidad entre navegadores.
VBScript se utiliza para la funcionalidad de páginas web del lado del servidor a través de Active Server Pages (ASP). El motor ASP, asp.dll , invoca vbscript.dll para ejecutar scripts de VBScript. El VBScript que está incrustado en una página ASP está contenido dentro de los modificadores de contexto <% y %>. El siguiente ejemplo muestra la hora actual en formato de 24 horas.
<% Opción explícita %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <cabeza> <title> Ejemplo de VBScript </title> </cabeza> <cuerpo> <div><% 'Obtiene la hora actual de la función Now(). ' Un signo '=' que aparece después de un cambio de contexto (<%) es una abreviatura ' para una llamada al método Write() del objeto Response. Atenuar timeValue : timeValue = Ahora %> La hora, en formato de 24 horas , es <%= Hora ( timeValue ) %> : <%= Minuto ( timeValue ) %> : <%= Segundo ( timeValue ) %> . </div> </cuerpo> </html>
VBScript puede ejecutarse directamente en el sistema operativo a través de Windows Script Host (WSH). Un archivo de script, normalmente con extensión .vbs
, se puede ejecutar a través de Wscript.exe para la interfaz gráfica de usuario (GUI) o Cscript.exe para la interfaz de línea de comandos (CLI).
Un archivo Windows Script (WSF), con estilo XML, puede incluir varios archivos VBS y, por lo tanto, es una biblioteca de código VBScript que se puede reutilizar de forma modular. Los archivos tienen extensión .wsf
y se pueden ejecutar utilizando wscript.exe o cscript.exe , como si se tratara de un archivo..vbs
Una aplicación HTML (HTA) tiene el mismo estilo que HTML. El HTML del archivo se utiliza para generar la interfaz de usuario y se utiliza un lenguaje de programación como VBScript para la lógica del programa. Los archivos tienen extensión .hta
y se pueden ejecutar mediante mshta.exe .
VBScript también se puede utilizar en un componente de script de Windows, una clase de script habilitada para ActiveX que puede ser invocada por otras aplicaciones habilitadas para COM. [12] Estos archivos tienen la extensión .wsc .
El lenguaje VBScript está basado en el clásico Visual Basic. [13] Entre sus características más destacadas se incluyen:
Un "procedimiento" es la construcción principal en VBScript para separar el código en módulos más pequeños. VBScript distingue entre una función, que puede devolver un resultado en una declaración de asignación, y una subrutina, que no puede hacerlo. Los parámetros son posicionales y se pueden pasar por valor o por referencia.
Las estructuras de control incluyen los bucles Do iterativos y condicionales habituales, las instrucciones If-Then-Else y las instrucciones Case, con algunas variantes más complejas, como ElseIf y las estructuras de control anidadas.
Como ayuda para la memoria en la codificación, y ciertamente para facilitar la lectura, hay una gran cantidad de constantes, como True y False para valores lógicos, vbOKCancel y vbYesNo para códigos MsgBox, vbBlack y vbYellow para valores de color, vbCR para el carácter de retorno de carro y muchas otras.
Las variables tienen el tipo " Variant " por defecto, pero es posible (y a veces necesario) forzar un tipo particular (entero, fecha, etc.) usando funciones de conversión (CInt, CDate, etc.)
La interacción del usuario se proporciona a través de las funciones MsgBox
y InputBox
que proporcionan un formato de cuadro de diálogo simple para mensajes y entradas. Ambas funciones muestran mensajes de solicitud, la primera devuelve una respuesta estándar y la segunda devuelve un valor numérico o de texto proporcionado por el usuario. Para una interacción de GUI más elaborada con los controles, se puede utilizar VBScript en combinación con HTML, por ejemplo, en una aplicación HTML . Los formularios controlados por eventos no son compatibles como en Visual Basic o Visual Basic para aplicaciones .
Los nombres no distinguen entre mayúsculas y minúsculas. Sin embargo, se considera que una buena práctica del estilo VBScript es ser coherente y usar las mayúsculas con cuidado.
Cuando se aloja en Windows Script Host , VBScript ofrece numerosas funciones que son comunes a los lenguajes de scripting, pero que no están disponibles en Visual Basic 6.0 . Estas funciones incluyen:
CScript, el ejecutor de línea de comandos, proporciona opciones para:
La administración del sistema de archivos, la modificación de archivos y las operaciones de transmisión de texto se implementan con la biblioteca de tiempo de ejecución de scripts scrrun.dll
. Esta proporciona objetos como FileSystemObject, File y TextStream, que exponen el sistema de archivos de Windows al programador.
La entrada/salida de archivos binarios y de memoria se proporciona mediante la clase "ADODB.Stream", que también se puede utilizar para generar cadenas (para evitar la concatenación excesiva de cadenas, que puede resultar costosa) y para interconvertir matrices de bytes y cadenas. El acceso a la base de datos se hace posible mediante ActiveX Data Objects (ADO), y la metabase de IIS se puede manipular utilizando la función GetObject() con los permisos suficientes (útil para crear y destruir sitios y directorios virtuales). Los archivos y esquemas XML se pueden manipular con las interfaces de programación de aplicaciones de la biblioteca XML de Microsoft ( msxml6.dll , msxml3.dll ), que también se pueden utilizar para recuperar contenido de la World Wide Web mediante los objetos XMLHTTP y ServerXMLHTTP (cadenas de clase "MSXML2.XMLHTTP.6.0" y "MSXML2.ServerXMLHTTP.6.0", respectivamente).
También se puede añadir funcionalidad a través de tecnologías ActiveX. Las preocupaciones de seguridad han llevado a que muchos controles ActiveX hayan sido incluidos en la lista negra del proceso de Internet Explorer por Microsoft, que implementa el bit de desactivación a través de actualizaciones de seguridad mensuales de Windows para desactivar el código vulnerable de Microsoft y de terceros. [14] [15]
Los programadores pueden utilizar la extensibilidad a través de módulos COM (ActiveX) para equipar específicamente el Script Host y VBScript con las funciones requeridas o deseadas. El componente "VTool", por ejemplo, agrega una serie de ventanas de diálogo, acceso a archivos binarios y otras funciones. [16]
Microsoft no pone habitualmente a disposición un IDE ( entorno de desarrollo integrado ) para VBScript, aunque Microsoft Script Editor viene incluido con ciertas versiones de Microsoft Office.
Para fines de depuración, el Microsoft Script Debugger todavía se puede utilizar en las versiones actuales de Windows, aunque la herramienta no se haya actualizado en años. Permite al usuario establecer puntos de interrupción en el código VBScript, pero la interfaz de usuario es más que torpe.
Hay depuradores de VBScript disponibles de fuentes de terceros, [17] [18] y muchos editores de texto ofrecen resaltado de sintaxis para el lenguaje.
Durante la ejecución, cuando ocurre un error, el host del script emite un mensaje que indica el tipo de error y el número de la línea infractora.
Aunque VBScript es un lenguaje de scripting de propósito general, varias áreas de uso particulares son dignas de mención. En primer lugar, solía ser ampliamente utilizado entre los administradores de sistemas en el entorno de Microsoft, [19] pero desde entonces ha sido superado ampliamente por PowerShell . En segundo lugar, VBScript es el lenguaje de scripting para Micro Focus Unified Functional Testing , una herramienta de automatización de pruebas. [20] Una tercera área a destacar es la adopción de VBScript como lenguaje de scripting interno para algunas aplicaciones integradas, como interfaces de operador industrial e interfaces hombre-máquina. El DBMS jerárquico InterSystems Caché (que tiene sus raíces en el lenguaje MUMPS ) también admite una implementación de VBScript, Cache BASIC, para programar código almacenado. [21]
VBScript omite varias características útiles del Visual Basic completo, como la tipificación estricta, la captura de errores extendida y la capacidad de pasar una cantidad variable de parámetros a una subrutina. Sin embargo, su uso está relativamente extendido porque es fácil de aprender y porque quienes implementan código en el lenguaje no necesitan pagar regalías a Microsoft siempre que se reconozca la marca registrada VBScript. [ cita requerida ] Cuando una organización obtiene una licencia de Visual Basic para Aplicaciones (VBA) de Microsoft, como lo han hecho empresas como Autodesk, StatSoft, Great Plains Accounting y Visio (posteriormente adquirida por Microsoft), se le permite redistribuir el entorno completo de escritura y depuración de código VBA con su producto.
VBScript se utiliza en lugar de VBA como lenguaje de macros de Outlook 97.
VBScript se puede utilizar de forma eficaz para automatizar las tareas diarias de la oficina, así como para la supervisión en el entorno basado en Windows. También se puede utilizar en colaboración con ADODB ActiveX Data Objects (ADODB) para lograr una conectividad eficaz con las bases de datos.
VBScript también se puede utilizar para crear malware y virus, como el gusano ILOVEYOU que se propagó a través de archivos adjuntos de correo electrónico en Outlook 97 y que costó miles de millones de dólares.