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.
Two years old, but for completeness...
Standard, inline approach: (i.e. behaviour you'd get when using
&
in Linux)Notes: 1.
CALL
is paired with the .bat file because that where it usually goes.. (i.e. This is just an extension to theCMD /C CALL "foo.bat"
form to make it asynchronous. Usually, it's required to correctly get exit codes, but that's a non-issue here.); 2. Double quotes around the .bat file is only needed if the name contains spaces. (The name could be a path in which case there's more likelihood of that.).If you don't want the output:
If you want the bat to be run on an independent console: (i.e. another window)
If you want the other window to hang around afterwards:
Note: This is actually poor form unless you have users that specifically want to use the opened window as a normal console. If you just want the window to stick around in order to see the output, it's better off putting a
PAUSE
at the end of the bat file. Or even yet, add^& PAUSE
after the command line: