I have a "setup" script which I run in the morning which starts all the programs that I need. Now some of those need additional setup of the environment, so I need to wrap them in small BAT scripts.
How do I run such a script on Windows XP in the background?
CALL env-script.bat
runs it synchronously, i.e. the setup script can continue only after the command in the env-script has terminated.
START/B env-script.bat
runs another instance of CMD.exe in the same command prompt, leaving it in a really messy state (I see the output of the nested CMD.exe, keyboard is dead for a while, script is not executed).
START/B CMD env-script.bat
yields the same result. None of the flags in CMD seem to match my bill.
Other than foreground/background term. Another way to hide running window is via vbscript, if is is still available in your system.
name it as sth.vbs and call it from bat, put in sheduled task, etc. PersonallyI'll disable vbs with no haste at any Windows system I manage :)
Create a new C# Windows application and call this method from main:
This works on my Windows XP Home installation, the Unix way:
Since START is the only way to execute something in the background from a CMD script, I would recommend you keep using it. Instead of the /B modifier, try /MIN so the newly created window won't bother you. Also, you can set the priority to something lower with /LOW or /BELOWNORMAL, which should improve your system responsiveness.
Actually, the following works fine for me and creates new windows:
test.cmd:
test2.cmd
test3.cmd
Combine that with parameters to
start
, such as/min
, as Moshe pointed out if you don't want the new windows to spawn in front of you.Actually is quite easy with this option at the end: