Puede intentar usar el método Wshshell.Run que le da poco control del proceso que comienza con él. O puede utilizar el método WshShell.Exec que dará el control de darlo por terminado, obtener una respuesta, pasar más parámetros (distintos de los argumentos de línea de comandos), obtener el estado, y otros
Para utilizar Ejecutar (método simple)
Dim ProgramPath, WshShell, ProgramArgs, WaitOnReturn,intWindowStyle
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
intWindowStyle=1
WaitOnReturn=True
WshShell.Run Chr (34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs,intWindowStyle, WaitOnReturn
ProgramPath es la ruta completa a la secuencia de comandos que desea ejecutar
ProgramArgs son los argumentos que desea pasar a la secuencia de comandos. (NOTA: los argumentos están separados por un espacio, si desea utilizar un argumento que contenga un espacio, deberá incluir ese argumento entre comillas [Una forma segura de hacerlo es usar CHR (34) Ejemplo ProgramArgs= chr (34) & "/Hello World" & chr (34)
])
IntWindowStyle es el número entero que determina cómo se mostrará la ventana.Más información sobre esto y WaitOnReturn se puede encontrar aquí WshShell.Run Method
WaitOnReturn si es verdadero, el script se detendrá hasta que el comando haya terminado, si es falso, el script continuará justo después de iniciar el comando.
NOTA: El método Ejecutar puede devolver el código de salida, pero debe establecer WaitOnReturn en True y asignar el 'WshShell.Run' a una variable. (EX: ExitCode=WshShell.Run (Command,intWindowStyle,True)
)
utilizar EXEC (Método Avanzado)
Dim ProgramPath, WshShell, ProgramArgs, Process, ScriptEngine
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
ScriptEngine="CScript.exe"
Set Process=WshShell.Exec (ScriptEngine & space (1) & Chr(34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs)
Do While Process.Status=0
'Currently Waiting on the program to finish execution.
WScript.Sleep 300
Loop
ProgramPath mismo que la descripción Run READ'S RUN
ProgramArgs DITTO
ScriptEngine El motor va a utilizar para ejecutar el script ya que el método exec requiere una aplicación win32, debe especificar esto. Por lo general, ya sea "WScript.exe" o "CScript.exe"
Proceso este es el Objeto que hace referencia al programa que iniciará la secuencia de comandos. Tiene varios miembros y son: ExitCode, ProcessID, Status, StdErr, StdIn, StdOut, Terminate.
más detalles acerca de los miembros del proceso objeto
- ExitCode Este es el código de salida que se devuelve cuando el proceso termina.
- ID de proceso Este es el ID que se asigna al proceso, cada proceso tiene un ID de proceso único.
- Estado Este es un número de código que indica el estado del proceso, se establece en '-1' cuando finaliza el proceso.
- StdErr Este es el objeto que representa el flujo de error estándar
- StdIn Este es el objeto que representa el flujo de entrada estándar, lo utilizan para escribir parámetros adicionales o cualquier cosa que desea pasar a la secuencia de comandos que está corriendo. (
Process.StdIn.WriteLine "Hello Other Worlds"
)
- StdOut Este es el objeto que representa la salida estándar Stream, Es READONLY esta manera puede utilizar
Process.StdOut.ReadLine
Si no hay nada que leer a continuación, la secuencia de comandos se colgará a la espera de una salida. lo que significa que la secuencia de comandos parecerá ser No responde
- Terminar Llamar a este método para forzar la finalización del proceso.
Para obtener más información acerca de WshShell.Exec ir a Exec Method Windows Scripting Host
puedes hacerlo usando .bat – ukanth
Sé que es capaz de con a.¿Pero no hay una forma de hacerlo dentro del guión actual? – markdigi