How can I execute a Windows command line in background?

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

3

11 Answers

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."

2

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 
11

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 & 
8
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.

1

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 "n" "notepad.exe"

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

Hope that helps.

4

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.

2

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'.

I did this in a batch file: by starting the apps and sending them to the background. Not exact to the spec, but it worked and I could see them start.

rem Work Start Batch Job from Desktop rem Launchs All Work Apps @echo off start "Start OneDrive" "C:\Users\username\AppData\Local\Microsoft\OneDrive\OneDrive.exe" start "Start Google Sync" "C:\Program Files\Google\Drive\GoogleDriveSync.exe" start skype start "Start Teams" "C:\Users\username\AppData\Local\Microsoft\Teams\current\Teams.exe" start Slack start Zoom sleep 10 taskkill /IM "explorer.exe" taskkill /IM "teams.exe" taskkill /IM "skype.exe" taskkill /IM "slack.exe" taskkill /IM "zoom.exe" taskkill /IM "cmd.exe" @echo on 

killing explorer kills all explorer windows, I run this batch file after start up, so killing explorer is no issue for me. You can seemingly have multiple explorer processes and kill them individually but I could not get it to work. killing cmd.exe is to close the CMD window which starts because of the bad apps erroring.

1

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

0

You Might Also Like