Categorias
Archivos
 
15

Subrutina para hacer el Include

 

Desde que estamos escribiendo código en vbscript, la reutilización de código se ha limitado únicamente al cortado y pegado del mismo; El programador buscaba donde tenia un código igual o parecido para utilizarlo en el proceso de programación del momento; motivado porque el código ya estaba probado y daba los resultados que estaba necesitando. Lo anterior es funcional pero no es lo más adecuado y no ayuda en nada a nuestra productividad.

 

En otros lenguajes de programación tales como C++, C#, php y otros, la reutilización de código se hace utilizando “include” pero desafortunadamente esta útil característica no fue incluida en vbscript. Los “include” nos permiten crear código en archivos separados e importarlos en nuestros scripts en tiempo de ejecución.

 

En este articulo explicaremos una forma de habilitar el uso de “include” en vbscript con el animo de que se convierta en un témplate estándar que usaremos cuando vayamos a reutilizar código.

 

Los objetivos cubiertos en la solución son:

  1. El archivo a incluir puede ser definido a partir de una ruta completa o involucrando variables de entorno. Si se envía únicamente el nombre de un archivo sin especificar su directorio se buscara también en la ruta actual que esta usando nuestro script.
  2. Se definirá un directorio desde donde se podrá incluir código por defecto y actuara como nuestro repositorio de código.
  3. El témplate debe llevar rastro de los archivos de código incluidos para evitar duplicidad.

Mostramos ahora una serie de ejemplos que la rutina de "include" debe soportar para que sea satisfactoria, se asume que el script a incluir se llama myscript.vbs:
'Incluir código desde la carpeta temporal.
Include "%Temp%\myscript.vbs"
'Incluir código desde la carpeta netlogon del Controlador de Dominio donde hemos autenticado.
Include "%LogonServer% \ Netlogon \ ScriptRepository\Myscript.vbs"
'Incluir código desde la ruta c:\folder
Include "c:\folder\myscript.vbs"
'Incluir código sin definir ruta.
Include "myscript.vbs"

En este ultimo caso el archivo a incluir se buscara en el directorio de nuestro repositorio central de código y si no existe allí, se buscara en la ruta corriente de nuestro script.

 

Basados en los objetivos planteados escribimos el código del témplate el cual tuvo bases algunos códigos que ya existía en soluciones sobre el tema en Internet con adiciones fundamentales que creamos para soportar los objetivos solicitados, este témplate lo llamamos IncludeTemplate.vbs.  Revisemos ahora como fue organizado el codigo para resolver cada uno de los objetivos: El objetivo #3 lo solucionamos en la cabecera del témplate creando el objeto dictionary IncludeFilesList donde guardemos la ruta completa de cada archivo de código que hayamos incluido. Antes definimos la variable RepositoryFolderPath que apunta al directorio de nuestro repositorio central de código y con ello resolvemos el objetivo #2. Veamos el código donde se muestra esto:

Dim RepositoryFolderPath,IncludeFilesList:Set IncludeFilesList=CreateObject("Scripting.Dictionary")

 Enseguida mostramos el código de la rutina “Include” el cual es el corazón de la solución:

La rutina “Include” esencialmente tiene como función principal leer el contenido del archivo que enviamos como parámetro y hacerlo disponible para nuestro uso; esto lo logramos usando una serie de funciones y objetos vbscript que detallamos a continuación:

 

Funcion ExpandEnvironmentStrings del Objeto Shell: Esta función la usamos para resolver rutas de archivos que contengan variables de entorno tales como %temp%, y con esto nos permite que la ruta del directorio de nuestro repositorio Central de código también pueda contener variables de Entorno. Por Ejemplo: %Logonserver%\Netlogon\ScriptRepository.

 

Funcion GetAbsolutePathName: La usamos para incluir un archivo ubicado en la ruta corriente de nuestro script enviando como parámetro solo el nombre del archivo.

 

Funcion ExecuteGlobal: Con esta instrucción el contenido del archivo incluido es ejecutado en el espacio global de nuestro script; Si el contenido es solo un fragmento de código este es ejecutado inmediatamente, en caso contrario si es una definición de clase esta queda lista para ser usada en la creación de instancias de objetos de la misma.

 

El témplate, IncludeTemplate.vbs esta disponible en nuestra pagina de descargas buscando por el criterio "témplate for using includes in vbscript".


En la siguiente pagina explicaremos un ejemplo de como incluir un fragmento de código usando el témplate.

 

Paginas: 1 de 3 Página Siguiente
Publicado en: Clases VBS, Vbscript

Comentarios

Actualmente no hay comentarios, sera el primero en publicar uno.

Digite su comentario

Nombre (obligatorio)

Email (obligatorio)

Website

Enter the code shown above:

 
Inspired by Nina