VBScript ( Microsoft Visual Basic Scripting Edition) es un lenguaje de programación obsoleto para la creación de scripts en Microsoft Windows mediante el Modelo de Objetos Componentes (COM), basado en Visual Basic clásico y Active Scripting . Fue popular entre los administradores de sistemas para la gestión de equipos y la automatización de muchos aspectos de los entornos informáticos, y se ha instalado de forma predeterminada en todas las versiones de escritorio de Microsoft Windows desde Windows 98 ; [ 1 ] en Windows Server desde Windows NT 4.0 Option Pack ; [ 2 ] y opcionalmente con Windows CE (dependiendo del dispositivo en el que se instale).
Los entornos de ejecución de VBScript incluyen Windows Script Host (WSH), Internet Explorer (IE) e Internet Information Services (IIS). [ 3 ] El entorno de ejecución se puede integrar en otros programas a través del Microsoft Script Control ( msscript.ocx ).
En octubre de 2023, Microsoft anunció que VBScript estaba obsoleto. [ 4 ] En mayo de 2024, se anunció un calendario de obsolescencia en varias fases, deshabilitándolo por defecto "alrededor de 2027" y eliminándolo algún tiempo después. [ 5 ]
Historia
VBScript comenzó como parte de las Tecnologías de Scripts de Microsoft Windows, lanzadas en 1996. Esta tecnología (que también incluía JScript ) estaba inicialmente dirigida a desarrolladores web. En 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 obtuvo el apoyo de los administradores de sistemas Windows que buscaban una herramienta de automatización más potente que el lenguaje de procesamiento por lotes desarrollado 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 instrucció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 punteros a funciones a través de GetRef, [ 9 ] y compatibilidad con Distributed COM (DCOM).
En la versión 5.5, se añadieron SubMatches [ 10 ] a la clase de expresiones regulares en VBScript, para permitir finalmente a los autores de scripts capturar el texto dentro de los grupos de la expresión. Esta 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. A partir de entonces, el soporte correría a cargo del Equipo de Ingeniería de Mantenimiento de Microsoft , responsable de la corrección de errores y las mejoras de seguridad. Tras anunciar sus planes para eliminar el soporte para VBScript, Microsoft sugirió migrar a Windows PowerShell o JavaScript . [ 5 ]
Entornos
Web del lado del cliente
En una página web cargada por Internet Explorer , VBScript funciona de forma similar a JavaScript . El código VBScript en HTML es la lógica que interactúa con el Modelo de Objetos del Documento (DOM) de la página , lo que permite funcionalidades imposibles solo con HTML. Sin embargo, otros navegadores web como Chrome , Firefox y Opera no son compatibles con VBScript. Por lo tanto, cuando se requiere programación del lado del cliente y compatibilidad entre navegadores, los desarrolladores suelen optar por JavaScript debido a su amplia compatibilidad.
Página del servidor activo
VBScript se utiliza para la funcionalidad de páginas web del lado del servidor mediante Active Server Pages (ASP). El motor ASP, asp.dll , invoca vbscript.dll para ejecutar scripts VBScript. El código VBScript incrustado en una página ASP se encuentra entre 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><head><title> Ejemplo de VBScript </title></head><cuerpo><div><%' Obtener 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.Dim timeValue : timeValue = Now %>La hora, en formato de 24 horas , es<%= Hora ( timeValue ) %> : <%= Minuto ( timeValue ) %> : <%= Segundo ( timeValue ) %> . </div></body></html>Host de scripts de Windows
VBScript puede ejecutarse directamente en el sistema operativo mediante el Host de scripts de Windows (WSH). Un archivo de script, generalmente con extensión .v.vbs , puede ejecutarse mediante Wscript.exe para la interfaz gráfica de usuario (GUI) o Cscript.exe para la interfaz de línea de comandos (CLI).
Archivo de script de Windows
Un archivo de script de Windows (WSF), con un estilo similar a 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 .wsfy se pueden ejecutar usando wscript.exe o cscript.exe , como cualquier otro archivo..vbs
Aplicación HTML
Una aplicación HTML (HTA) se basa en el estilo HTML. El código HTML del archivo se utiliza para generar la interfaz de usuario, y un lenguaje de scripting como VBScript se utiliza para la lógica del programa. Los archivos tienen la extensión .hta y se pueden ejecutar mediante mshta.exe ..hta
Componente de script de Windows
VBScript también se puede usar 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 .
Funcionalidad
Características del idioma
El lenguaje VBScript está modelado a partir del Visual Basic clásico. [ 13 ] Entre sus características destacadas se incluyen:
Un "procedimiento" es la estructura principal en VBScript para dividir el código en módulos más pequeños. VBScript distingue entre una función, que puede devolver un resultado en una instrucción de asignación, y una subrutina, que no puede. Los parámetros son posicionales y pueden pasarse por valor o por referencia.
Las estructuras de control incluyen los bucles Do iterativos y condicionales habituales, las sentencias If-Then-Else y las sentencias Case, con algunas variantes más complejas, como ElseIf y estructuras de control anidadas.
Como ayuda mnemotécnica en la codificación, y ciertamente para facilitar la lectura, hay una gran cantidad de constantes, como Truey Falsepara valores lógicos, vbOKCancely vbYesNopara MsgBoxcódigos, vbBlacky vbYellowpara valores de color, vbCRpara 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.) utilizando funciones de conversión ( CInt, CDate, etc.).
La interacción con el usuario se proporciona mediante las funciones MsgBoxque InputBoxofrecen un formato de cuadro de diálogo sencillo para mensajes y entrada de datos. Ambas funciones muestran mensajes de solicitud; la primera devuelve una respuesta estándar, mientras que la segunda devuelve un texto o valor numérico proporcionado por el usuario. Para una interacción más elaborada con los controles de la interfaz gráfica de usuario (GUI), se puede usar VBScript en combinación con HTML, por ejemplo, en una aplicación HTML . No se admiten formularios controlados por eventos como en Visual Basic o Visual Basic para Aplicaciones .
Los nombres no distinguen entre mayúsculas y minúsculas. Sin embargo, se considera una buena práctica en el estilo de VBScript ser coherente y usar las mayúsculas con criterio.
Funcionalidades de VBScript
Cuando se ejecuta en el Host de scripts de Windows , VBScript ofrece numerosas características comunes a los lenguajes de scripting, pero que no están disponibles en Visual Basic 6.0 . Estas características incluyen:
- Argumentos de línea de comandos con nombre y sin nombre
- Entrada estándar y salida estándar , que podrían ser redirigidas
- WSH.Echo, que escribe en la consola y no se puede redirigir.
- WSH.ExitCode, que se puede comprobar desde archivos por lotes de DOS o mediante el proceso que invocó el archivo de script.
- Impresoras de red
- Acciones de red
- Carpetas especiales, por ejemplo Escritorio, Favoritos, Mis documentos, etc.
- Información del usuario de la red, como la pertenencia a grupos.
- Métodos para la ejecución en tiempo de ejecución de texto definido en tiempo de ejecución: Eval y Execute
- Métodos para ejecutar scripts en máquinas remotas
- Instrumentación de administración de Windows (WMI)
- Funcionalidad para integrar un motor VBScript en otras aplicaciones, utilizando un lenguaje ampliamente conocido.
CScript, el ejecutor de línea de comandos, ofrece las siguientes opciones:
- Modo interactivo o por lotes
- Invocar el modo de depuración desde la línea de comandos
- Informe de errores, incluido el número de línea.
Funcionalidad adicional
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 (Scripting Runtime Library scrrun.dll). Esta proporciona objetos como FileSystemObject, File y TextStream, que exponen el sistema de archivos de Windows al programador.
La clase "ADODB.Stream" proporciona acceso a archivos binarios y memoria, y también se puede usar para generar cadenas (evitando la concatenación excesiva de cadenas, que puede resultar costosa) y para convertir matrices de bytes y cadenas. El acceso a la base de datos se realiza mediante ActiveX Data Objects (ADO), y la metabase de IIS se puede manipular con la función GetObject() con los permisos necesarios (útil para crear y eliminar 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 usar 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 agregar funcionalidad mediante tecnologías ActiveX. Las preocupaciones de seguridad han llevado a que muchos controles ActiveX sean incluidos en la lista negra del proceso de Internet Explorer por Microsoft, que implementa esta medida a través de las actualizaciones de seguridad mensuales de Windows para deshabilitar el código vulnerable de Microsoft y de terceros. [ 14 ] [ 15 ]
Los programadores pueden utilizar la extensibilidad mediante módulos COM (ActiveX) para equipar específicamente el Host de scripts y VBScript con las funciones necesarias o deseadas. El componente "VTool", por ejemplo, añade varias ventanas de diálogo, acceso a archivos binarios y otras funcionalidades. [ 16 ]
Herramientas de desarrollo
Microsoft no suele ofrecer un IDE ( Entorno de Desarrollo Integrado ) para VBScript, aunque el Editor de scripts de Microsoft se ha incluido en ciertas versiones de Microsoft Office.
Para depurar código, el Depurador de scripts de Microsoft aún se puede usar en las versiones actuales de Windows, aunque la herramienta no se ha actualizado en años. Permite al usuario establecer puntos de interrupción en el código VBScript, pero la interfaz de usuario es bastante engorrosa.
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 se produce un error, el programa que aloja el script emite un mensaje que indica el tipo de error y el número de la línea que lo provoca.
Usos
Aunque VBScript es un lenguaje de scripting de propósito general, cabe destacar varias áreas de uso específicas. En primer lugar, solía ser ampliamente utilizado por los administradores de sistemas en el entorno de Microsoft, [ 19 ] pero desde entonces ha sido ampliamente superado por PowerShell . En segundo lugar, VBScript es el lenguaje de scripting de OpenText UFT One , una herramienta de automatización de pruebas. [ 20 ] Un tercer aspecto a destacar es la adopción de VBScript como lenguaje de scripting interno para algunas aplicaciones integradas, como las interfaces de operador industrial y las interfaces hombre-máquina. El sistema de gestión de bases de datos jerárquico InterSystems Caché (que tiene sus raíces en el lenguaje MUMPS ) también admite una implementación de VBScript, Cache BASIC, para la programación de código almacenado. [ 21 ]
VBScript omite varias características útiles de Visual Basic completo, como el tipado fuerte, la gestión de errores extendida y la capacidad de pasar un número variable de parámetros a una subrutina. Sin embargo, su uso está relativamente extendido debido a su facilidad de aprendizaje y a que quienes implementan código en este lenguaje no necesitan pagar regalías a Microsoft siempre que se reconozca la marca registrada VBScript. 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), puede redistribuir el entorno completo de escritura y depuración de código VBA junto con su producto.
VBScript se utiliza en lugar de VBA como lenguaje de macros en Outlook 97.
VBScript puede utilizarse eficazmente para automatizar tareas administrativas cotidianas y para la monitorización en entornos Windows. También puede utilizarse junto con los objetos de datos ActiveX de ADODB para una conectividad eficaz con la base 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.
Véase también
Referencias
- ↑ Información de la versión de WSH , en MSDN
- ↑ Información de la versión de VBScript , en MSDN
- ↑ ¿Qué es VBScript?, en la biblioteca de MSDN
- ↑ "Funciones obsoletas en el cliente de Windows: Novedades en Windows" . 7 de noviembre de 2023.
- 1 2 Shankar Chilla, Naveen (22 de mayo de 2024). "Desuso de VBScript: cronogramas y próximos pasos" . Centro de la comunidad de Microsoft . Recuperado el 3 de junio de 2025 .
- ↑ 86-DOS
- ↑ " La historia de Visual Basic" . www.johnsmiley.com
- ↑ Visual Basic Scripting Edition: With Statement , en MSDN
- ↑ Función GetRef , en MSDN
- ↑ Visual Basic Scripting Edition: SubMatches Collection , en MSDN
- ↑ ¿Qué hay de VBScript?, dentro del artículo Introducción a JScript .NET de Andrew Clinick de Microsoft Corporation, en Scripting Clinic en MSDN (14 de julio de 2000)
- ↑ Presentación de los componentes de scripts de Windows , en MSDN
- ↑ "Características de VBScript" . msdn.microsoft.com . 24 de octubre de 2011.
- ↑ "Cómo evitar que un control ActiveX se ejecute en Internet Explorer" . Microsoft . 24 de agosto de 2007. Consultado el 29 de junio de 2009 .
- ↑ "Aviso de seguridad de Microsoft (960715): Paquete acumulativo de actualizaciones para ActiveX Kill Bits" . Microsoft . 17 de enero de 2009. Consultado el 29 de junio de 2009 .
- ↑ Componente de script "VTool" : mejoras funcionales y de interfaz gráfica para WSH/VBS
- ↑ "VbsEdit - Editor de VBScript con depurador - Editor de VBS" . www.vbsedit.com
- ↑ Corp., Spline Technologies. "SplineTech VBS Debugger, VBScript Debugger. Depurar VBS" . www.remotedebugger.com .
- ↑ Centro de scripts , sitio web de Microsoft dirigido a programadores de scripts para administración de sistemas.
- ↑ " Prueba rápida profesional: conceptos básicos de VBScript " . Archivado del original el 17 de febrero de 2010 . Consultado el 5 de mayo de 2010 .
- ↑ "Caché para análisis de datos no estructurados" . InterSystems . Consultado el 24 de septiembre de 2018 .
Enlaces externos
- Referencia del lenguaje VBScript , Microsoft Docs
- ¿Ha muerto VBScript? , isvbscriptdead.com
- Comandos VBScript , ss64.com
- Guías y ejemplos prácticos de VBScript , ss64.com
- Descripción general de WMI , Microsoft TechNet
- Familia de lenguajes de programación BASIC
- Internet Explorer
- Lenguajes de programación de Microsoft
- Lenguajes de programación creados en 1996
- Lenguajes de scripting
- Componentes de Windows