En AutoIt sólo hay un tipo de dato llamado Variant. Un variant puede contener datos numéricos, cadenas de caracteres, entre otros que pueden ser usados dependiendo de la situación en la que usted se encuentre. A continuación, se muestra una tabla con los subtipos de datos de variant y sus respectivos rangos.
Números enteros (Int32 e Int64):
Números flotantes o decimales (Double):
Cadena de caracteres (String):
Boolean
Ejemplo: Para realizar este ejemplo, primero vamos a crear nuestro script de AutoIt y para ello existen dos maneras:



Luego se abrirá el editor, cuando esto suceda procedemos a guardar el archivo escogiendo la ubicación que queramos y le damos como nombre boolean_ejemplo1.
Ahora que hemos creado nuestro script, nos posicionamos en él y escribimos las siguientes líneas de código.
1 2 3 4 5 6 7 8 9 10 |
#include <MsgBoxConstants.au3> $bBoolean = True ; $bBoolean es una variable MsgBox($MB_OK,"Prueba 1", $bBoolean) ; El resultado es True MsgBox($MB_OK,"Prueba 2", True And False) ; El resultado es False MsgBox($MB_OK,"Prueba 3", True Or False) ; El resultado es True MsgBox($MB_OK,"Prueba 4", False And False) ; El resultado es False MsgBox($MB_OK,"Prueba 5", False Or False) ; El resultado es False MsgBox($MB_OK,"Prueba 6", True And (Not False)) ; El resultado es True |
Luego ejecutamos el script y para esto hay varias formas, una de ellas es ir al archivo boolean_ejemplo1 y dar clic derecho -> Run Script o también podemos estar en la ventana de nuestro script e ir a Tools -> Go.
Cuando lo ejecutemos veremos varias cajas de mensajes con los resultados de las distintas operaciones que podemos hacer con los operadores booleanos.
Notas:
Ejemplo: Creamos un script llamado boolean_ejemplo2 y en él escribimos el siguiente código.
1 2 3 |
MsgBox(0, "Prueba 1", True And (Not 0)) ; El resultado es True MsgBox(0, "Pureba 2", False Or 12) ; El resultado es True MsgBox(0, "Prueba 3", False And -2.5) ; El resultado es False |
Si corremos el script, nos dará como resultado.
Ejemplo: Creemos un script llamado boolean_ejemplo3 y en él escribamos el siguiente código.
1 2 3 4 5 6 7 8 9 10 |
$suma = True + 2 ; 1 + 2 = 3 $resta = 40 - False ; 40 - 0 = 40 $mult = False * 20 ; 0 * 20 = 0 $div = 100 / True ; 100 / 1 = 100 MsgBox(0, "Suma", "La suma es igual a: "&$suma) ; La suma es igual a 3 MsgBox(0, "Resta", "La resta es igual a: "&$resta) ; La resta es igual a 40 MsgBox(0, "Multiplicación", "La multiplicación es igual a: "&$mult) ; La multiplicación ;es igual a 0 MsgBox(0, "División", "La división es igual a: "&$div) ; La división es igual a 100 |
Luego ejecutamos el script y tendremos lo siguiente.
Notas:
Ejemplo: Abrimos un script, lo nombramos boolean_ejemplo4 y escribimos el siguiente código.
1 |
MsgBox(0, "Booleano + String", "La prueba es: "&True) |
Cuando ejecutamos el script, el booleano de valor True al estar concatenado con una cadena, éste se convierte en la cadena “True”. A continuación, se muestre el resultado.
Una variable es un espacio de memoria para almacenar datos para que se puedan acceder a ellos rápidamente. Cada variable tiene un nombre y empiezan con el carácter signo de pesos ($) y solo deben contener letras, números y el carácter guion bajo (_). A continuación, se muestra algunos ejemplos de nombres de variables.
Las variables no distinguen entre minúsculas y mayúsculas, es decir, la variable $miVariable es lo mismo que $MiVariaBle.
Para facilitar el mantenimiento de los scripts y tener una idea de qué tipo de variable se está declarando, se recomienda utilizar la nomenclatura estándar al momento de declarar nuestras variables. Ejemplifiquemos esto mediante la siguiente tabla.
Al momento de declarar las variables usando la nomenclatura estándar tenga en cuenta lo siguiente:
Si desea observar la lista completa de nomenclaturas que se propone, puede ingresar al enlace convención de nomenclatura variable estándar.
Declaración de variables: Las variables se declaran y se crean usando las palabras claves Local, Global y Dim, aunque esta última no es tan recomendable. Las variables pueden ser declaradas sin la necesidad de utilizar Local, Global o Dim, pero es preferible declararlas de manera explícita.
También se pueden declarar y crear constantes utilizando la palabra clave Const. Las constantes y variables se diferencian debido que las constantes deben obligatoriamente ser inicializadas, mientras que en las variables no es necesario hacer esto.
Ahora se muestra la sintaxis para declarar una variable y una constante.
1 |
Global | Local [Const] $variable [ = inicializador ] |
Donde:
Ejemplo: Creamos un script con nombre prueba_constante y en él ponemos el siguiente código.
1 2 3 4 |
Global Const $fPi $fPi = 3.14159 MsgBox(0, "PI", "El valor de PI es: "&$fPi) |
Si corremos este script, veremos que nos saldrá un error de sintaxis y se debe a que lo que se declaró fue una constante, por ende, se debe inicializar con un valor desde el principio. Para corregir este error, debemos inicializarlo desde el inicio y borrar la línea 3 del código anterior.
1 2 3 |
Global Const $fPi = 3.14159 MsgBox(0, "PI", "El valor de PI es: "&$fPi) |
Ahora si volvemos a ejecutar el script, nos debería funcionar correctamente.
AutoIt tiene los siguientes operadores de asignación, concatenación, matemático y lógicos.
Se utilizan cuando se quiera cambiar el flujo de un script en función de una o más condiciones. Las condiciones se evalúan como True o False. Estas condiciones por lo general usan los operadores de comparación.
A continuación, se presentan los condicionales que se encuentran en AutoIt.
1 2 3 4 5 6 7 8 9 |
If <condicion> Then ;instrucciones... [ElseIf condicion-n Then ;instrcucciones elseif... ] [Else ;instrucciones else... ] EndIf |
Ejemplo: Para observar el funcionamiento de la declaración If…ElseIf...Else creamos un script que lleve como nombre If…ElseIf…Else y luego escribamos el siguiente código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Local $iDia = 4 If $iDia = 1 Then MsgBox(0,"Día de la semana", "Hoy es Lunes") ElseIf $iDia = 2 Then MsgBox(0,"Día de la semana", "Hoy es Martes") ElseIf $iDia = 3 Then MsgBox(0,"Día de la semana", "Hoy es Miércoles") ElseIf $iDia = 4 Then MsgBox(0,"Día de la semana", "Hoy es Jueves") ElseIf $iDia = 5 Then MsgBox(0,"Día de la semana", "Hoy es Viernes") ElseIf $iDia = 6 Then MsgBox(0,"Día de la semana", "Hoy es Sábado") ElseIf $iDia = 7 Then MsgBox(0,"Día de la semana", "Hoy es Domingo") Else MsgBox(0,"Día de la semana", "El número no coincide") EndIf |
Corremos el script y tendremos este resultado.
La sintaxis de Select es:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Select Case <condicion-1> ;instrucciones condicion-1 [Case <condicion-2> ;instrucciones condicion-2 ] [Case <condicion-n> ;instrucciones condicion-n ] [Case Else ;instrucciones else ] EndSelect |
Ejemplo 1: Acá vamos a realizar el mismo ejemplo de los días de la semana hecho con If/ElseIf, pero en esta ocasión lo haremos con el bloque Select/Case. Entonces agregamos un nuevo script, lo nombramos Select (1) y por último escribimos este código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Local $iDia = 4 Select Case $iDia = 1 MsgBox(0,"Ejemplo Select","Hoy es Lunes") Case $iDia = 2 MsgBox(0,"Ejemplo Select","Hoy es Martes") Case $iDia = 3 MsgBox(0,"Ejemplo Select","Hoy es Miércoles") Case $iDia = 4 MsgBox(0,"Ejemplo Select","Hoy es Jueves") Case $iDia = 5 MsgBox(0,"Ejemplo Select","Hoy es Viernes") Case $iDia = 6 MsgBox(0,"Ejemplo Select","Hoy es Sábado") Case $iDia = 7 MsgBox(0,"Ejemplo Select","Hoy es Domingo") Case Else MsgBox(0,"Ejemplo Select","El número no coincide") EndSelect |
Luego de escribir el código, ejecutamos el script.
Ejemplo 2: Creemos un script con nombre Select (2) y en ella colocamos el siguiente código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Local $iNumero = 15 Select Case $iNumero>=1 And $iNumero<=10 ; 1er Case MsgBox(0,"Ejemplo Select 2","$iNumero está entre 1 y 10") Case $iNumero>=13 And $iNumero<=17 ; 2do Case MsgBox(0,"Ejemplo Select 2","$iNumero está entre 13 y 17 ") Case $iNumero>=11 And $iNumero<=20 ; 3er Case MsgBox(0,"Ejemplo Select 2","$iNumero está entre 11 y 20") Case $iNumero>=21 And $iNumero<=30 ; 4to Case MsgBox(0,"Ejemplo Select 2","$iNumero está entre 21 y 30 ") Case Else ; 5to Case MsgBox(0,"Ejemplo Select 2","$iNumero no está en los rangos permitidos") EndSelect |
Ponemos a correr el script y obtendremos esta respuesta.
Observemos que en este ejemplo el 2do y 3er Case cumplen la condición debido a que $iNumero se encuentra en esos rangos, pero siempre ingresará al primer Case verdadero y ejecutará las instrucciones que hay en él, por eso que entró al 2do Case. Si no se hubiese encontrado ninguna condición verdadera, entonces entraría al Case Else y haría la instrucción que en ella se colocó.
1 2 3 4 5 6 7 8 9 10 |
Switch <expresion> Case <valor> [To <valor>] [,<valor> [To <valor>]...] ;instrucciones [Case <valor> [To <valor>] [,<valor> [To <valor>]...] ;instrucciones ] [Case Else ;instrucciones ] EndSwitch |
Ejemplo 1: Hagamos el mismo ejemplo de los días de la semana utilizando la estructura Switch. Para hacer esto, creemos un nuevo script que lo llamaremos Swtich (1) y en él ponemos este código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Local $iDia = 4 Switch $iDia Case 1 MsgBox(0,"Ejemplo Switch","Hoy es Lunes") Case 2 MsgBox(0,"Ejemplo Switch","Hoy es Martes") Case 3 MsgBox(0,"Ejemplo Switch","Hoy es Miércoles") Case 4 MsgBox(0,"Ejemplo Switch","Hoy es Jueves") Case 5 MsgBox(0,"Ejemplo Switch","Hoy es Viernes") Case 6 MsgBox(0,"Ejemplo Switch","Hoy es Sábado") Case 7 MsgBox(0,"Ejemplo Switch","Hoy es Domingo") Case Else MsgBox(0,"Ejemplo Switch","El número no coincide") EndSwitch |
Si ejecutamos el script nos dará el siguiente resultado.
Ejemplo 2: Ahora haremos que nuestra expresión en el Switch compare su valor con un rango de valores especificados que hay en cada Case e ingresará solo al que cumpla la condición, entonces para ver esto creamos un nuevo script y lo nombramos Switch (2).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Local $iNumero = 22 Local $sMensaje = "" Switch $iNumero Case 1 To 10 $sMensaje = "$iNumero está entre 1 y 10" Case 11 To 20 $sMensaje = "$iNumero está entre 11 y 20" Case 21 To 30 $sMensaje = "$iNumero está entre 21 y 30" Case 31 To 40 $sMensaje = "$iNumero está entre 31 y 40" EndSwitch MsgBox(0,"Ejemplo Switch 2",$sMensaje) |
Ejecutamos el script y nos da este resultado.
Un ciclo o bucle es una sección del script que se repite varias veces siempre y cuando una determinada condición sea falsa o verdadera. AutoIt tiene disponible las siguientes declaraciones de bucle:
1 2 3 |
For <variable> = <inicio> To <fin> [Step <contador>] ;instrucciones Next |
Ejemplo: Lo que haremos será utilizar la estructura del bucle For para mostrar los números del 1 al 8. Crearemos un script al cual llamaremos Estructura For y en él coloquemos este código.
1 2 3 4 5 6 7 |
Local $iNumero Local $iInicio = 1 Local $iFin = 8 For $iNumero = $iInicio To $iFin MsgBox(0,"Ejemplo For",$iNumero) Next |
Al ejecutar el script, nos saldrá varias cajas de mensaje mostrando los números del 1 al 8.
Ejemplo 2: Ahora haremos que el bucle For vaya desde 0 hasta 10, pero en saltos de a dos y para lograr esto debemos poner el contador igual a 2.
Para este ejemplo, crearemos otro script con nombre Estructura For 2 y agregamos el siguiente código.
1 2 3 4 5 |
Local $iNumero For $iNumero = 0 To 8 Step 2 MsgBox(0,"Ejemplo For 2",$iNumero) Next |
Ponemos a correr el script y obtendremos los siguientes resultados.
1 2 3 |
While <condicion> ;instrucciones WEnd |
Ejemplo: Mostraremos los números del 1 hasta el 8 mediante el bucle While. Creamos un script con nombre Estructura While y le anexamos las siguientes líneas de código.
1 2 3 4 5 6 |
Local $iNumero = 1 While $iNumero <= 8 MsgBox(0,"Ejemplo While",$iNumero) $iNumero += 1 WEnd |
Ponemos a correr el script y obtendremos los siguientes resultados.
1 2 3 |
Do ;instrucciones Until <expresion> |
Ejemplo: Realicemos el mismo ejemplo que se hizo con la declaración While, pero esta vez usando Do. Como los demás ejemplos, creemos un nuevo script con nombre Estructura Do y en ella escribimos este código.
1 2 3 4 5 6 |
Local $iNumero = 1 Do MsgBox(0,"Ejemplo Do...Until",$iNumero) $iNumero = $iNumero + 1 Until $iNumero > 8 |
Si corremos el script, nos debe mostrar los números del 1 hasta el 8.
Una función es un “porción” de código que se puede invocar desde cualquier parte del script para cumpla una determinada “función”. En AutoIt existen dos tipos de funciones: funciones integradas y funciones de usuario.
1 2 3 4 |
Func nombreFuncion([Const][ByRef]$param1,...,[Const][ByRef]$paramN,$par1Opcional=valor,...) ;instrucciones [Return[valor]] EndFunc |
Ejemplo: Realizaremos una función que me permita sumar dos números y me retorne el resultado a una variable que por último será mostrada en pantalla.
Entonces añadimos un nuevo script con nombre Función y escribimos el siguiente código.
1 2 3 4 5 6 7 8 9 |
Global $iValorSuma $iValorSuma = Sumar(2, 6) ; invoco a la función Sumar MsgBox(0,"Ejemplo Función","La suma es igual a: "&$iValorSuma) Func Sumar($iNum1, $iNum2) Return $iNum1 + $iNum2 ; retorno la suma de los dos valores EndFunc |
Ejecutamos el script y nos mostrará el resultado de la suma que debería ser 8.
Un arreglo es una variable que contiene un conjunto de datos y pueden tener múltiples dimensiones. Se puede acceder a un elemento mediante un número de índice que se relaciona con la posición del elemento dentro del arreglo.
En AutoIt, el primer elemento empieza en la posición 0. Los elementos del arreglo se almacenan en un orden definido y se pueden ordenar.
A los arreglos se les debe especificar un tamaño desde el inicio ya que si no lo hace se puede ya no será un arreglo sino un Mapa (este tema no será visto en el curso).
Ejemplo 1: Lo que se mostrará a continuación, son las distintas formas de asignar valores a un arreglo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
; 1ra forma Local $aArray[3] = [1,2,3] ; 2da forma Local $aArray[] = [1,2,3] ; 3ra forma Local $aArray[3] $aArray[0] = 1 $aArray[1] = 2 $aArray[2] = 3 ; 4ta forma Local $aArray = [1,2,3] |
Ejemplo 2: Ahora es el turno de hacer una matriz. Crearemos una matriz de dimensiones 3 x 3, luego recorreremos esa matriz asignándole valores del 1 al 9 y por último mostraremos la suma de la diagonal principal.
Para lograr esto, creamos un script que tendrá como nombre Matriz y pondremos las siguientes líneas de código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Global $i Global $j Global $iContador = 0 Global $aArreglo[9] = [1,2,3,4,5,6,7,8,9] Global $vMatriz[3][3] Global $iDiagPrincipal = 0 ; Asignamos los valores a la matriz For $i = 0 To 2 For $j = 0 To 2 $vMatriz[$i][$j] = $aArreglo[$iContador] $iContador = $iContador + 1 Next Next ; Sumamos los valores de la diagonal principal For $i = 0 To 2 For $j = 0 To 2 If $i = $j Then $iDiagPrincipal += $vMatriz[$i][$j] EndIf Next Next MsgBox(0,"Matriz","La suma de la diagPrincipal es: "&$iDiagPrincipal) |
Al ejecutar el script y si todo está correcto, nos debería mostrar el valor 15 que es la suma de la diagonal principal (1 + 5 + 9).
String aparte de ser un subtipo de dato de la variable Variant posee algunas funciones que nos permiten tratar las cadenas de caracteres. A continuación, mencionaremos algunas de estas funciones.
1 |
StringLen("string") |
Ejemplo: En un nuevo script que nombraremos StringLen, escribimos el siguiente código.
1 2 3 |
Local $iLongitud = StringLen("Hola Mundo.") MsgBox(0,"Función StringLen","La longitud de esta cadena es: "&$iLongitud&" caracteres") |
Al ejecutar el script nos debe mostrar la cantidad de caracteres que hay en el string incluyendo los espacios.
1 |
StringLower("string") |
Ejemplo: Creamos en un script con nombre StringLower y en ella escribamos las siguientes líneas de código.
1 2 3 |
Local $sStringLower = StringLower("HOLA MUNDO") MsgBox(0,"Función StringLower",$sStringLower) |
Corremos el script y nos de arrojar la palabra “HOLA MUNDO” convertida en minúscula.
1 |
StringUpper("string") |
Ejemplo: En un nuevo script que tendrá como nombre StringUpper, colocamos el siguiente código.
1 2 3 |
Local $sStringUpper = StringUpper("hola mundo") MsgBox(0,"Función StringUpper",$sStringUpper) |
Al correr el script, veremos que se muestra el string “hola mundo” convertida en mayúsculas.
1 |
StringSplit("string","deilimitadores"[,bandera=0]) |
Ejemplo 1: Creemos un script con nombre StringSplit (1) y en ella escribamos el siguiente código.
1 2 3 4 5 6 |
Local $sHolaMundo = "Hola Mundo" Local $aSSplit = StringSplit($sHolaMundo," ") MsgBox(0,"Función StringSplit 1","No. cadenas: "&$aSSplit[0]) MsgBox(0,"Función StringSplit 1","Arreglo posición 1: "&$aSSplit[1]) MsgBox(0,"Función StringSplit 1","Arreglo posición 2: "&$aSSplit[2]) |
Lo que hace el código mostrado anteriormente es dividir la cadena “Hola Mundo” cuando encuentre un espacio en blanco. Luego en la línea 6 muestra lo que hay en la posición 0 del arreglo $aSSplit que de acuerdo con lo explicado anteriormente debería retornar el número de cadenas, en este caso son 2 (“Hola”, “Mundo”), en las líneas 7 y 8 se muestran los elementos que hay en las posiciones 1 y 2 del arreglo $aSSplit que serían “Hola” y “Mundo” respectivamente.
Ejemplo 2: Ahora verificaremos si cuando usamos una cadena vacía para delimitar, entonces cada carácter de esta cadena se devolverá en cada posición del arreglo. Entonces creamos un nuevo script que tendrá como nombre StringSplit (2) y en ella escribimos el siguiente código.
1 2 3 4 |
Local $sQVision = "QVision" Local $aSplit = StringSplit($sQVision,"") MsgBox(0,"StringSplit 2",$aSplit[1]&$aSplit[2]&$aSplit[3]&$aSplit[4]&$aSplit[5]&$aSplit[6]&$aSplit[7]) |
Cada una de las posiciones del arreglo $aSplit contendrá las letras de la cadena “QVision”. Ejecutamos el script y observaremos el siguiente resultado.
Nota: La posición 0 del arreglo $aSplit no se utilizó ya que contiene el número de subcadenas que se formaron al hacer la división de la cadena “QVision”, en este caso debería tener el valor de 7.
La sintaxis de esta función es la siguiente.
1 |
StringReplace("string","searchstring/start","replacestring"[,occurrence=0[,casesense=0]]) |
Nota: Para utilizar las constantes globales $STR_NOCAESENSE, $STR_CASESENSE y $STR_NOCASESENSEBASIC debe incluir el archivo StringConstants.au3 usando la siguiente línea en el inicio del script #include <StringConstants.au3>.
Ejemplo: El script que vamos a crear tendrá como finalidad mostrar el uso de la función StringReplace en donde colocaremos un texto y reemplazaremos los espacios en blanco por guion (-). Luego mostraremos el nuevo texto resultante junto al número de reemplazos que se tuvieron que hacer.
El nombre que le pondremos a nuestro script será StringReplace y dentro de ella escribimos el siguiente código.
1 2 3 4 5 |
Local $sString = StringReplace("Esto es un párrafo con espacios en blanco"," ","-") Local $iReemplazos = @extended ;Cantidad de reemplazos que se realizaron MsgBox(0,"StringReplace","La nueva frase es: "&@CRLF&@CRLF&$sString) MsgBox(0,"StringReplace","Cantidad de reemplazos hechos: "&$iReemplazos) |
Al ejecutar el script obtendremos los siguientes resultados.
En el código anterior, la macro @CRLF es usado para dar saltos de líneas.