Introducción a VBScript
VBScript es un lenguaje de programación horrible, pero extremadamente útil
en el entorno de sistemas ya que durante años ha sido el lenguaje que por
excelencia se ha usado para la administración/automatización de Windows.
Se trata de un lenguaje interpretado, no compilado. Otros lenguajes interpretados
son JavaScript, perl, y salvando las distancias Python. El proceso que ejecuta los vbs es el WScript.exe
1. Los comentarios empiezan por '
2. Al iniciar el script decidimos si es necesario o no declarar las variables
antes de usarlas: Option Explicit
3. El script se interrumpe ante cualquier error, a no ser que declaremos:
On Error Resume Next
4. Una instrucción es una línea (no ";" final)
5. Las variables se declaran con la expresión Dim
Algunas consideraciones sobre variables:
- se puede declarar más de una a la vez separándolas por ","
- por convención, aquellas que apuntan a objetos empiezan por "obj"
y las otras tienen nombres representativos.
6. Para asignar valor a una variable NO objeto: var = <valor>
' SCript de prueba que muestra una frase en un msgBox Option Explicit
On Error Resume Next Dim frase frase="Bienvenido"
MsgBox frase |
Probar:
1. Comentando la declaración de la variable (Dim frase)
2. Comentando la declaración de la variable y además el Resume Next
3. Todo lo anterior + el Option Explicit
0. Es necesario DECLARARLOS
1. La primera posición de una matriz es la 0. Así un Array de 10 elementos empieza
en el 0 y acaba en el 9
2. Pueden tener varias dimensiones, y contener diferentes tipos de datos.
3. Para añadir un elemento a un array indicamos en qué posición queremos añadirlo
Ejemplo: programa que declara un array de 2x10, y asigna valores. Luego muestra dos de ellos
Dim arrUsuarios(1,9) arrUsuarios(0,0)= "Alex" arrUsuarios(0,1)= "Garcia" arrUsuarios(1,0)= "Jose" arrUsuarios(1,1)= "Garrido"
MsgBox "El primer usuario es " & arrUsuarios(0,0) & " y el segundo " & arrUsuarios (1,0) |
4. Hay arrays dinámicos, se declaran sin especificar sus elementos. P.e.
Dim arrUsuarios()
y se les asigna un tamaño mediante las sentencias "ReDim" y "Redim Preserve"
Redim arrUsuarios(9) 'la primera vez
Redim Preserve arrUsuarios(10) 'para añadirle una fila más
5. Se pueden declarar/asignar mediante el uso de la función Array()
de esta otra forma:
Ejemplo:
Dim arrUsuarios arrUsuarios = Array("valor1","valor2","valor3") ReDim Preserve arrUsuarios(10) |
Convirtiendo Strings en Arrays gracias a la función Split(cad,separador)
str = "alex,jose,maria,carla" arrNombres= Split(str,",") MsgBox arrstr(3) |
Convirtiendo Arrays en Strings gracias a la función Join(array,separador)
dim arrNombres arrNombres = Array("alex","jose","maria","carla") str = Join(arrNombres,";") MsgBox str |
Ésta es la lista de los tipos de datos que tenemos en VBScript, y a continuación está la lista de las funciones para pasar de un tipo a otro.
Tipos de datos:
Funciones de conversión entre datos:
En castellano también se habla como de Procedimientos y de Funciones. Ambos son una forma de reutilizar y ordenar el código, y ambos permiten el paso de parámetros. La diferencia entre ellos es:
Statements:
- no devuelven nada
- sus parámetros se pasan sin paréntesis
Functions:
- devuelven un valor, que por lo tanto habrá que recoger en una variable y procesar
- sus parámetros se pasan entre paréntesis
Para comprobar la diferencia entre uno y otro tipo de subrutina vamos a tomar como ejemplo el “MsgBox”, que es una subrutina que tanto puede ser un Statement como una Function según se invoque.
Cuando se usa la función MsgBox, el valor que devuelve es un número u otro en función del botón que se pulse en el cuadro de diálogo.
MsgBox "vbscript is in linguiji sicriti", 48 , "mensaje secreto"
(Poner captura)
Los parámetros que admite son:
1. String: que será el cuerpo del mensaje que se mostrará
2. Integer: que identifica el tipo de iconos/recuadro que aparecerá
3. String: que aparecerá en la barra de título
Ejemplo de MsgBox como Function primero, y como Statement posteriormente en el If ... Then
Dim valorElegido valorElegido = MsgBox ("Desea continuar" & VbCrLf & _ "en caso negativo lo tiene muy mal", _ vbYesNo , "Seguimos?")
If valorElegido = vbYes Then MsgBox ("Buena elección, continuemos") Else MsgBox ("Ha pulsado NO, en junio su elección se verá cumplida") End If |
Ejemplo de la función InputBox que permite recoger texto introducido por el usuario:
Dim loginName Dim confirmacion
loginName = InputBox ("Nombre del usuario a dar de alta") confirmacion = MsgBox ("El nombre de usuario que introdujo es: " & _ loginName & VbCrLf & " es correcto?", _ vbYesNo , "Continuar?")
If confirmacion = vbYes Then MsgBox "Usted ha decidido continuar",0,"titulo" Else MsgBox "Usted ha decidido NO continuar" End If |
Notas:
- VbCrLf es una Constante definida en VBS que corresponde al valor de salto de línea y retorno de carro en un texto
- El “_” a final de línea indica que la instrucción sigue en la línea siguiente.
- vbYesNo es una constante númerica igual a 4, y que corresponde con el cuadro con Yes y No cuando se pasa como segundo parámetro de MsgBox
Tipos de MsgBox y constantes asociadas:
Valores devueltos por MsgBox según el botón que se pulse:
Algunas funciones de uso muy común:
De fecha:
Year, Month, Day, WeekDay, Hour, Minute, Second
De conversión de tipo:
Cstr, CBool, ... las que aparecían en el cuadro anterior
De cadena (strings):
Join y Split, que hemos visto al hablar de Arrays
InStr y InStrRev para hacer búsquedas
Len
Replace
LCase y UCase
LTrim, RTrim, Trim
LBound, UBound