15.1.09

Scripts con Windows Scripting Host

Llevo algunos días trasteando a ratos con una herramienta creo que algo desconocidad para la mayoría, pero extremadamente útil y potente. Se trata del WSH (Windowos Scripting Host). Es motor de scripts que llevan todos los SO Windows y que permite automatizar tareas. Está pensado, sobre todo, para administradores de sistemas, pero se puede utilizar por cualquiera que quiera automatizar ciertas tareas de su SO. Los usuarios de UNIX/Linux tienen el intérprete de comandos del shell, bash, etc..., sin embargo en windows lo más parecido son los archivos BAT, que sinceramente, se quedan muy cortos.
Con el WSH tenemos acceso a casi todos las posibilidad de nuestro SO, abrir ventanas, seleccionar directorios con una ventana de diálogo, abrir programas, arrancar y parar servicios, crear cuentas de usuarios, etc, etc..., es decir, casi todo.
Crear estos scripts es sumamente sencillo. Basta con crear un archivo de texto, y guardarlo con la extensión VBS o JS (el primero en VisualBasic Script, y el segundo en JScript). Por ejemplo, el clásico "Hola Mundo", sería así:

WScript.Echo "Hola Mundo"

Obviamente esto no tiene mucho interés, a ver si esto interesa más:

Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
Const MSG_INICIO = "Seleccione una carpeta: "

Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objShell.Namespace(MY_COMPUTER)

Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, MSG_INICIO, OPTIONS, strPath)

If objFolder Is Nothing Then
Wscript.Quit
End If

Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
Wscript.echo "Ha seleccionado: "+objPath

Lo que hace este script es mostrar el típico cuadro de diálogo de seleccionar carpeta y luego mostrarnos la ruta de la carpeta seleccionada.

Ni que decir tiene que se pueden crear scripts para parar y arrancar máquinas, servicios, borrar temporales, crear tareas programadas, o interactuar con Word, Excel, o cualquier otro programa del SO. Por ejemplo, yo lo he usado para crear un scripts que crea en disco una estructura de carpetas y automáticamente se sincroniza con un servidor de Subversion a través del TortoiseSVN.
Las posibilidades son casi infinitas y pidiendo ayuda al Scripting Guy, podemos ver un montón de ejemplos más con el código listo para usar.

Share/Save/Bookmark