3

I want to start (launch) three programs in windows and all of them in Background i.e. No windows.

I found two ways (both using vb script to hide a bat)

Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("H:\test.bat", 0) set WshShell = Nothing http://answers.yahoo.com/question/index?qid=20071011212557AAofTy6)

And another one here on SU:

Save this one line of text as file invisible.vbs:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

To run any program or batch file invisibly, use it like this:

wscript.exe "C:\Wherever\invisible.vbs" "C:\Some Other Place\MyBatchFile.bat"

To also be able to pass-on/relay a list of arguments use only two double quotes

CreateObject("Wscript.Shell").Run "" & WScript.Arguments(0) & "", 0, False

Example: Invisible.vbs "Kill.vbs ME.exe" Source : https://superuser.com/a/62646/301368

What I want to do is to open multiple programs and all of them in background, but when I use this I have to start each one of them separately.

If I were in linux it would be easy:

#!/bin/bash
./program1 -args &
./program2 -args &
./program3 -args &

How to achieve this in windows ? (I am using the 8.1) but I'd guess it might be general enough for other versions.

(I Accept any solutions VBS / C / bat / whatever else works)

Mansueli
  • 204

1 Answers1

4

Just use the Wscript.Shell.Run method many times and make sure you don't wait on return (set 3rd arg to false).

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "program1.exe", 0, False
WshShell.Run "program2.exe", 0, False
WshShell.Run "program3.exe", 0, False

Passing args to the programs:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """program1.exe""" & "args", 0, False
WshShell.Run """program2.exe""" & "args", 0, False
WshShell.Run """program3.exe""" & "args", 0, False
Mansueli
  • 204
Zoredache
  • 20,438