Windows Script Host  

Controlar aplicaciones

Windows Script Host permite iniciar aplicaciones. Las siguientes secuencias de comandos demuestran algunas de estas capacidades.

Crear una aplicación de servidor local

Algunas aplicaciones, como Microsoft Word, exponen objetos a los que se puede tener acceso mediante programación. La siguiente secuencia de comandos utiliza el corrector ortográfico de Word.

// JScript.
var Word, Doc, noCorregido, Corregido;
var wdDialogToolsSpellingAndGrammar = 828;
var wdDoNotSaveChanges = 0;
noCorregido = "¡Holla mundo!";
Word = new ActiveXObject("Word.Application");
Doc = Word.Documents.Add();
Word.Selection.Text = noCorregido;
Word.Dialogs(wdDialogToolsSpellingAndGrammar).Show();
if (Word.Selection.Text.length != 1) 
   Corregido = Word.Selection.Text;
else
   Corregido = noCorregido;
Doc.Close(wdDoNotSaveChanges);
Word.Quit();

' VBScript.

Dim Word, Doc, noCorregido, Corregido
Const wdDialogToolsSpellingAndGrammar = 828
Const wdDoNotSaveChanges = 0

noCorregido = "¡Holla mundo!"
Set Word = CreateObject("Word.Application")
Set Doc = Word.Documents.Add
Word.Selection.Text = noCorregido
Word.Dialogs(wdDialogToolsSpellingAndGrammar).Show

If Len(Word.Selection.Text) <> 1 Then 
Corregido = Word.Selection.Text
Else
   Corregido = noCorregido
End If

Doc.Close wdDoNotSaveChanges
Word.Quit

Utilizar el comando Shell.Exec para iniciar programas

El comando Shell.Exec proporciona capacidades adicionales a las del método Shell.Run. Entre ellas están:

El siguiente ejemplo de VBScript muestra cómo utilizar las secuencias estándar y el comando Shell.Exec para buscar en un disco un archivo cuyo nombre coincida con una expresión regular.

En primer lugar, esta pequeña secuencia de comandos vuelca en StdOut la ruta de acceso completa de todos los archivos que se encuentran en el directorio actual y sus subdirectorios:

' VBScript.
'  MYDIR.VBS
Option Explicit
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
DoDir FSO.GetFolder(".")
Sub DoDir(Carpeta)
   On Error Resume Next
   Dim Archivo, subCarpeta
   For Each Archivo In Carpeta.Files
      WScript.StdOut.WriteLine Archivo.Path
   Next
   For Each subCarpeta in Carpeta.SubFolders
      DoDir subCarpeta
   Next
End Sub

A continuación, esta secuencia de comandos busca un patrón en StdIn y vuelca en StdOut todas aquellas líneas que coinciden con dicho patrón.

' MyGrep.VBS
Option Explicit
Dim RE, Linea
If WScript.Arguments.Count = 0 Then WScript.Quit
Set RE = New RegExp
RE.IgnoreCase = True
RE.Pattern = WScript.Arguments(0)
While Not WScript.StdIn.AtEndOfStream
   Linea = WScript.StdIn.ReadLine
   If RE.Test(Linea) Then WScript.StdOut.WriteLine Linea
WEnd

Estas dos secuencias de comandos juntas realizan la función deseada; la primera crea una lista con todos los archivos de un directorio y la segunda busca aquellas líneas que coinciden con una expresión regular. Ahora vamos a escribir un tercer programa, que realiza dos funciones: utiliza el sistema operativo para canalizar un programa en otro y después canaliza el resultado del último a su propio StdOut:

// MyWhere.JS
if (WScript.Arguments.Count() == 0)
   WScript.Quit();
var Pattern = WScript.Arguments(0);
var Shell = new ActiveXObject("WScript.Shell");
var Pipe = Shell.Exec("%comspec% /c \"cscript //nologo mydir.vbs | cscript //nologo mygrep.vbs " + Pattern + "\"");
while(!Pipe.StdOut.AtEndOfStream)
   WScript.StdOut.WriteLine(Pipe.StdOut.ReadLine());

Consulte también

Tareas básicas de Microsoft Windows Script Host | Método Exec | Método Run

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.