12

I have a Windows service (the Bamboo integration server) that runs a batch file as a subprocess (a build job) of that script. Within that batch file I would like to be able to start a process (let's call it workerprocess.exe) and have that process run in the background. This is all good, I've used:

start "title" /B workerprocess.exe 

That is all well and good. The problem is that this then holds up the completion of the build job. So the batch script finishes, but because of the workerprocess.exe subprocess, the service (Bamboo) does not know that it has finished: it still waits for (and displays output from) the workerprocess.exe.

I've looked in the documentation for the start command, and I can't see anything that does what I want. I saw this question but it didn't really help either - the service still ends up waiting for the process to finish.

So I guess in summary: how can I run a new process from a batch script so that it is completely detached and won't hold up anything that happens to be waiting for that batch script to complete.

2
  • 1
    Have you tried it without the "/B" parameter so that it doesn't start the process within the same command window? Commented Sep 5, 2013 at 2:52
  • @JoshR, that changed things. The service no longer receives output from the process, but is still blocked by it. Commented Sep 5, 2013 at 3:02

2 Answers 2

2

Have you tried Hidden Start (HSTART)? (Costs $20)

I use it personally to run an hourly batch job with the window hidden. They also mention that you can run commands sequentially as a parameter (or by default, I assume) run asynchronously. I don't know how this will affect your contention on CPU, memory, or disk... but the software also gives you the option to wait some time before performing the action.

1
  • 1
    When I wrote my answer in Sep 2013, the product was free all around. Sadly they are charging a price. Commented Apr 17, 2017 at 18:21
5

To self-hide already running script you'll need getCmdPid.bat and windowoMode.bat

@echo off echo self minimizing call getCmdPid.bat call windowMode.bat -pid %errorlevel% -mode hidden echo --other commands-- pause 

All linked scripts can be downloaded and saved with whatever name you find convenient.

  1. The IEXPRESS solution - as arguments accepts only the command and its arguments.

Example usage:

call hidder.bat myBat.bat myexe.exe call myexe.exe 
  1. SCHTASKS - Again accepts only two arguments - the command and the arguments.Also checks if it's started with elevated permissions and if possible gets the PID of the process with WEVTUTIL command.

Example usage:

call SCHPhidden.bat "cmd /c myBat.bat" "argument" 
  1. 'WScript.Shell' - the script is full wrapper of 'WScript.Shell' and every possible option can be set through the command line options.It's a jscript/batch hybrid and can be called as a bat.

Example usage (for more info print the help with '-h'):

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 
  1. 'Win32_ProcessStartup' - again full wrapper and all options are accessible through the command line arguments.This time it's WSF/batch hybrid with some Jscript and some VBScript pieces of code - but it returns the PID of the started process.If process id not hidden some options like X/Y coordinates can be used.

Example usage (for more info print the help with '-h').This will require the full path to the executable/script if it is not in the %path%:

call win32process.bat "notepad" -arguments "/A openFile.txt" -showWindow 0 -title "notepad" 
  1. The .NET solution . Most of the options of ProcessStartInfo options are used (but at the end I was too tired to include everything):

Example usage (for more info print the help with '-h'):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt" -style Hidden -directory "." -title "notepad" -priority Normal 
3
  • The link is not found Commented Oct 14, 2015 at 10:18
  • @rahilwazir - edited. Commented Oct 14, 2015 at 10:23
  • 2
    I tried these a bit - I think the details need to be cleaned up a GREAT deal. Simply looking at the first approach: IExpress, the link is to hidder.bat the example above uses something else. When I ran the script, it failed out asking me for an EXE which is not mentioned above. That might be ok if there was markdown on github, but there is not. Finally, running it produced some .DDF files, but nothing else.... Commented Jun 6, 2016 at 15:18

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.