VBScript 5.6 does not provide a function to execute a command line program within the same console-mode window as the script. If WshShell.Run is used to call the program, the program runs within a new window.
The Run function below can be used to run a program within the same window. RunCmd can be used to run an internal command processor command. The test program TestRun.vbs shows how to use these functions.
Example of how to call the test program:
cscript TestRun.vbs
File TestRun.vbs.zip
' Test program for Run and RunCmd functions.
' Author: Christian d'Heureuse (www.source-code.biz)
Option Explicit
Main
Sub Main
Run "attrib"
RunCmd "dir c:\*.sys"
End Sub
' Runs an external program and pipes it's output to
' the StdOut and StdErr streams of the current script.
' Returns the exit code of the external program.
Function Run (ByVal cmd)
Dim sh: Set sh = CreateObject("WScript.Shell")
Dim wsx: Set wsx = Sh.Exec(cmd)
If wsx.ProcessID = 0 And wsx.Status = 1 Then
' (The Win98 version of VBScript does not detect WshShell.Exec errors)
Err.Raise vbObjectError,,"WshShell.Exec failed."
End If
Do
Dim Status: Status = wsx.Status
WScript.StdOut.Write wsx.StdOut.ReadAll()
WScript.StdErr.Write wsx.StdErr.ReadAll()
If Status <> 0 Then Exit Do
WScript.Sleep 10
Loop
Run = wsx.ExitCode
End Function
' Runs an internal command interpreter command.
Function RunCmd (ByVal cmd)
RunCmd = Run("%ComSpec% /c " & cmd)
End Function
Author: Christian d'Heureuse (www.source-code.biz, www.inventec.ch/chdh)
License: Free / LGPL
Index