How can I execute a windows command line in the background, without it interacting with the active user?

  • 1
    Can you specify what you want to do? Do you want to perform a command on the command line in background or do you want to perform the whole command line in background, so it is unvisible from the desktop? – omnibrain Oct 12 '10 at 6:20
  • i need two cane perform a command on the command line in background or do you want to perform the whole command line in background – Mohammad AL-Rawabdeh Oct 12 '10 at 6:41
  • Duplicates this question on ServerFault. – Dan Dascalescu Aug 16 '15 at 20:11

11 Answers 11

up vote 25 down vote accepted

Your question is pretty vague, but there is a post on ServerFault which may contain the information you need. The answer there describes how to run a batch file window hidden:

You could run it silently using a Windows Script file instead. The Run Method allows you running a script in invisible mode. Create a .vbs file like this one

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

and schedule it. The second argument in this example sets the window style. 0 means "hide the window."

  • This is perfect. SetPoint for Logitech never, NEVER, starts with windows. I've been starting it manually for about 3 years now. Does it matter where the batch is? I've seen some people put this type of batch file in C, or the root. – ejbytes Jan 31 '16 at 0:00

This is a little late but I just ran across this question while searching for the answer myself and I found this:

START /B program

which, on Windows, is the closest to the Linux command:

program &

From the console HELP system:

C:\>HELP START

Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"     Title to display in window title bar.
    path        Starting directory.
    B           Start application without creating a new window. The
                application has ^C handling ignored. Unless the application
                enables ^C processing, ^Break is the only way to interrupt
                the application.

One problem I saw with it is that you have more than one program writing to the console window, it gets a little confusing and jumbled.

To make it not interact with the user, you can redirect the output to a file:

START /B program > somefile.txt
  • 2
    I like this answer best because it doesn't open another command window – wisbucky Jan 3 '14 at 16:17
  • 1
    This doesn't seem to work for me, it seems to only create a new cmd instance [?] however if I run it like start /B "" program then it worked... – rogerdpack Jun 24 '15 at 4:56
  • 1
    @rogerdpack That's right. For some reason with Windows 7, this is the command format. The "" is the mandatory title parameter. – ejbytes Jan 30 '16 at 23:58
  • 4
    Unfortunately, if I exit the shell window in which I spawned the process, it looks like the process also terminates. – palswim Jul 21 '16 at 22:36
  • 1
    @Qwerty: Look at the MSDN for SetConsoleCtrlHandler – Zan Lynx Sep 12 '16 at 19:29

I suspect you mean: Run something in the background and get the command line back immediately with the launched program continuing.

START "" program

Which is the Unix equivalent of

program &
  • 5
    what is the fg equivalent? Can we close the command prompt and the porgram will still run? – Nenotlep Oct 15 '14 at 11:34
  • Also, I want to run a program in command prompt and return to it from time to time, like in screen - is that doable with this? I need to be able to close the command prompt but keep the running program usable. – Nenotlep Oct 15 '14 at 11:36
  • 4
    What's that empty parameter of start? It doesn't work without it (executes just a new command instance), but start's help doesn't say anything about it, it states all parameters are optinional (or I don't understand it). – Dawid Ferenczy Oct 14 '15 at 17:41
  • @DawidFerenczy start works without the empty parameter for me, but I seem to get a shells with a separate configuration when I use the empty parameter, as a setting I did when I didn't have the empty parameter isn't used when I do use the empty parameter. I wonder why they use separate configurations? – HelloGoodbye Apr 13 '16 at 15:23
  • @Paul START "" program starts a command in a new terminal for me, while program & in Unix runs the command in and prints the output to the same terminal. – HelloGoodbye Apr 13 '16 at 15:25
START /MIN program 

the above one is pretty closer with its Unix counterpart program &

You can use this (commented!) PowerShell script:

# Create the .NET objects
$psi = New-Object System.Diagnostics.ProcessStartInfo
$newproc = New-Object System.Diagnostics.Process
# Basic stuff, process name and arguments
$psi.FileName = $args[0]
$psi.Arguments = $args[1]
# Hide any window it might try to create
$psi.CreateNoWindow = $true
$psi.WindowStyle = 'Hidden'
# Set up and start the process
$newproc.StartInfo = $psi
$newproc.Start()
# Return the process object to the caller
$newproc

Save it as a .ps1 file. After enabling script execution (see Enabling Scripts in the PowerShell tag wiki), you can pass it one or two strings: the name of the executable and optionally the arguments line. For example:

.\hideproc.ps1 'sc' 'stop SomeService'

I confirm that this works on Windows 10.

  • yep start /b no longer works. – Sajuuk May 6 at 5:32

If you want the command-line program to run without the user even knowing about it, define it as a Windows Service and it will run on a schedule.

  • 4
    how do you do that? – barlop Sep 30 '11 at 19:26
  • Alternatively you can make it a scheduled task - Control Panel->Administrative Tools->Scheduled Tasks or use the schtasks command in Windows XP and above (warning: schtasks is complicated). – LawrenceC Apr 6 '12 at 19:02

This is how my PHP internal server goes into background. So technically it should work for all.

start /B "" php -S 0.0.0.0:8000 &

Thanks

A related answer, with 2 examples:

  1. Below opens calc.exe:

call START /B "my calc" "calc.exe"

  1. Sometimes foreground is not desireable, then you run minimized as below:

call START /MIN "my mongod" "%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe"

  • This doesn't seem to run it minimized: call Start /MIN "c" "calc.exe" – moondra Mar 12 at 4:19
  • 1
    correct, it works for notepad: call start /min "n" "notepad.exe" – Manohar Reddy Poreddy Mar 12 at 6:44
  • So it works for windowed applications but not for console applications. Figures, as one can pass the SW_* to CreateProcessW via STARTUPINFO::wShowWindow (including SW_HIDE). – 0xC0000022L Aug 14 at 18:57
  • What is a full command, with above like "start" or other tool? do we need to write another program? – Manohar Reddy Poreddy Aug 15 at 1:50

An example :

start /MIN /B grep -noid include *.c 1>log.txt 2>1&

Starts grep in backgound redirect both stdout && stderr to log.txt

  • 6
    This answer has already been given multiple times and was explained in great detail. Does your answer contribute anything that has not yet been said? – Michael K Jan 28 '14 at 14:33

just came across this thread windows 7 , using power shell, runs executable's in the background , exact same as unix filename &

example: start -NoNewWindow filename

help start

NAME Start-Process

SYNTAX Start-Process [-FilePath] [[-ArgumentList] ] [-Credential ] [-WorkingDirectory ] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError ] [-RedirectStandardInput ] [-RedirectStandardOutput ] [-Wait] [-WindowStyle {Normal | Hidden | Minimized | Maximized}] [-UseNewEnvironment] []

Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]

ALIASES saps start

You can see the correct way to do this in this link:

How to Run a Scheduled Task Without a Command Window Appearing

Summarizing, you have to checkbox for 'Run whether user is logged on or not'. Task user credentials should be enter after pressing 'Ok'.

protected by allquixotic Sep 1 '16 at 21:25

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.