84 out of 126 rated this helpful - Rate this topic

Run Method (Windows Script Host)

Runs a program in a new process.


                      object
                      .Run(strCommand, [intWindowStyle], [bWaitOnReturn]) 
object

WshShell object.

strCommand

String value indicating the command line you want to run. You must include any parameters you want to pass to the executable file.

intWindowStyle

Optional. Integer value indicating the appearance of the program's window. Note that not all programs make use of this information.

bWaitOnReturn

Optional. Boolean value indicating whether the script should wait for the program to finish executing before continuing to the next statement in your script. If set to true, script execution halts until the program finishes, and Run returns any error code returned by the program. If set to false (the default), the Run method returns immediately after starting the program, automatically returning 0 (not to be interpreted as an error code).

The Run method returns an integer. The Run method starts a program running in a new Windows process. You can have your script wait for the program to finish execution before continuing. This allows you to run scripts and programs synchronously. Environment variables within the argument strCommand are automatically expanded. If a file type has been properly registered to a particular program, calling run on a file of that type executes the program. For example, if Word is installed on your computer system, calling Run on a *.doc file starts Word and loads the document. The following table lists the available settings for intWindowStyle.

intWindowStyle

Description

0

Hides the window and activates another window.

1

Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.

2

Activates the window and displays it as a minimized window.

3

Activates the window and displays it as a maximized window.

4

Displays a window in its most recent size and position. The active window remains active.

5

Activates the window and displays it in its current size and position.

6

Minimizes the specified window and activates the next top-level window in the Z order.

7

Displays the window as a minimized window. The active window remains active.

8

Displays the window in its current state. The active window remains active.

9

Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.

10

Sets the show-state based on the state of the program that started the application.

The following VBScript code opens a copy of the currently running script with Notepad.

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%\notepad " & WScript.ScriptFullName

The following VBScript code does the same thing, except it specifies the window type, waits for Notepad to be shut down by the user, and saves the error code returned from Notepad when it is shut down.

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("notepad " & WScript.ScriptFullName, 1, true)

The following VBScript code opens a command window, changes to the path to C:\ , and executes the DIR command.

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K CD C:\ & Dir"
Set oShell = Nothing

Applies To:

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Error Trying to Run Program Minimized

I am trying to write a small script to launch 3 programs, with 2 of them minimized.

The following script works:
----------------
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Exec("C:\Program Files (x86)\K7JNX\DM780-DXL\DM780-DXL.exe")
WScript.Sleep(1000)
WshShell.Exec("C:\Program Files (x86)\Amateur Radio\Ham Radio Deluxe\HRDLogbook.exe")
WScript.Sleep(1000)
WshShell.Exec("C:\Program Files (x86)\Amateur Radio\Ham Radio Deluxe\Digital Master.exe")

----------------------------

However, if I try the same thing with the Run command:

----------------------

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell"
WshShell.Run "C:\Program Files (x86)\K7JNX\DM780-DXL\DM780-DXL.exe", 7
WScript.Sleep(1000)
WshShell.Run "C:\Program Files (x86)\Amateur Radio\Ham Radio Deluxe\HRDLogbook.exe", 7
WScript.Sleep(1000)
WshShell.Exec("C:\Program Files (x86)\Amateur Radio\Ham Radio Deluxe\Digital Master.exe")

----------------------------------

I get a "The system cannot find the file specified" error at Line 3, Char 1.
 

 

Variable is undefined: 'Wscript'
I am trying to open a command prompt window from an hta file. When I tried to use the above scripting example to open a command prompt window, I get the error message: " Variable is undefined: 'Wscript' "

Is there something I must include in my .hta file to use wscript?

===========

answer: you can't invoke windows scripting from a webpage, it would be major security breach. Consequently, wscript object does not exist.

-----------

Better answer: The WScript object is actually not needed here.
replace the line
Set oShell = WScript.CreateObject ("WScript.Shell")
with the following
Set oShell = createObject( "WScript.Shell" )

or, in jScript:
oShell = new ActiveXObject( "WScript.Shell" );
Return value
Seriously, what does the return value means? $0I'm trying to use this with ASP to run a java application with the server. The thing is isn't working but I keep getting the return value '1' and I can't figure out the meaning of this number.$0
Run .exe with 2 arguments
Essentially, I need to create a short VB script that will run an .exe and pass a source directory and an output directory (both UNC paths). I have been working on this for quite a while and just can't quite get it to run.

The command I need to run is:
"\\uncpath\itextsharp.exe" "\\uncpath\sourceDir"  "\\uncpath\destinationDir\filename.pdf"

If I run the above from a command prompt it runs without any problems. However, when I try to execute from a script it bombs. I am very new to writing scripts so any and all help is welcome. :-)

Thanks!
Bug: method Run fails to open registered document with advertising information
Run method has the following bug. If Run method is opening a registered document (like explained in the article's Remarks) without parameter wait=true, and the registration information includes advertising information in the Registry (so called Darwin descriptor), and the script quits immediately after that, then in Windows XP it will fail. The workaround is to specify wait=true, or to put some delay after .run, such as wscript.sleep 1000. If opening the document invokes install-on-demand, the delay must be long enough, otherwise the installation will be killed in the middle, which may result in inconsistent state of the product.

Remarkably, since Microsoft Office documents do have advertising information, the example in the article about opening .doc file will not work.
Wolverine58
@Wolverine58 $0$0 $0 $0you tried using the full path to wscript.exe?$0 $0 $0$0 $0 $0it should be C:/Windows/system32/wscript.exe$0 $0$0 $0 $0depending on your windows version$0 $0$0 $0 $0Bim$0 $0
Ravijain
@Ravijain, that's an issue you'd need to take up with the application vendor.  In Outlook's case, you should probably use the /recycle switch - check the documentation...  http://office.microsoft.com/en-us/outlook-help/command-line-switches-HP001003110.aspx $0$0 $0 $0If WSHShell.AppActivate("Calculator")=False then$0
$0WshShell.Run "C:\windows\System32\calc.exe", 1, false$0
End If
Some issue with Run method...
Whenever i invoke Run method, it always create a new instance of program, for e.g. $0$0 $0 $0WshShell.Run "Outlook"$0 $0$0 $0 $0Above command always creates a new instance of the Outlook, even if there was already running Outlook available.$0 $0$0 $0 $0How i can come from this issue? How can Run method return already running Outlook(or any other program) instance?$0 $0$0 $0 $0Pls suggest.. $0