Windows Script Host permite iniciar aplicaciones. Las siguientes secuencias de comandos demuestran algunas de estas capacidades.
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
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());
Tareas básicas de Microsoft Windows Script Host | Método Exec | Método Run
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com. |