Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to keep the VBScript command window open during execution

When I execute a VBScript, the command window that it creates closes quickly before the user gets a chance to read the output. How can I get the window to stay open without modifying windows registry?

This is the code:

Set objShell = WScript.CreateObject("WScript.shell") 
objShell.Run "SyncToyCmd.exe -R", 1, True
like image 493
Martin Avatar asked Sep 23 '11 09:09

Martin


People also ask

How do I open a command prompt in VBScript?

Go to a run command and type 'command.com'.

How do I run a VBScript in Windows?

Click the Start button, and then click Run. In the Open field, type the full path of the script, and then click OK. You can also type WScript followed by the full name and path of the script you want to run.

How do I stop VBScript from running in the background?

If you have it open in command prompt you can press CTRL + C. Wait a few seconds and it will have terminated.


2 Answers

You can send your execution command through the cmd.exe command interpreter, along with a pause command which will give the user a Press any key to continue . . . prompt to close the window.

objShell.run "%comspec% /c ""SyncToyCmd.exe -R & pause""", 1, True

Or to keep the window alive, use the /k flag instead of /c:

objShell.run "%comspec% /k SyncToyCmd.exe -R", 1, True

But beware, your VBScript will not continue (or terminate) until this cmd window is manually closed.

The %comspec% environment variable refers to the correct command to open the command interpreter as per your operating system. On my XP machine, for instance, %comspec% is equal to C:\WINDOWS\system32\cmd.exe.

See cmd.exe documentation here: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true

More info on the use of the & versus the && command separators here.

like image 56
Jean-François Corbett Avatar answered Sep 28 '22 18:09

Jean-François Corbett


Assuming that it's the popped-up command window that you want to keep open (rather than the one running your VBScript), you can use CMD.exe's Pause command to achieve this:

Set objShell = WScript.CreateObject("WScript.shell") 
objShell.Run "cmd.exe /C ""SyncToyCmd.exe -R & Pause"" ", 1, True
like image 44
Tao Avatar answered Sep 28 '22 18:09

Tao