Como posso executar uma linha de comando do Windows em segundo plano?

131

Como posso executar uma linha de comando do Windows em segundo plano, sem interagir com o usuário ativo?

    
por Mohammad AL-Rawabdeh 12.10.2010 / 08:09

11 respostas

26

Sua pergunta é bem vaga, mas há um postar no ServerFault , que pode conter as informações necessárias. A resposta lá descreve como executar uma janela de arquivo de lote oculta:

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

    
por 12.10.2010 / 08:30
192

Isso é um pouco tarde, mas acabei de encontrar essa pergunta enquanto procurava a resposta e descobri:

START /B program

que, no Windows, é o mais próximo do comando do Linux:

program &

Do sistema de ajuda do console:

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.

Um problema que eu vi com isso é que você tem mais de um programa escrevendo para a janela do console, fica um pouco confuso e confuso.

Para não interagir com o usuário, você pode redirecionar a saída para um arquivo:

START /B program > somefile.txt
    
por 03.05.2013 / 16:28
59

Suspeito que você queira dizer: Execute algo em segundo plano e recupere a linha de comando imediatamente, com o programa iniciado em andamento.

START "" program

Qual é o equivalente Unix de

program &
    
por 30.09.2011 / 13:44
10
START /MIN program 

o acima é bem mais próximo com sua contraparte do Unix program &

    
por 13.09.2012 / 08:55
5

Você pode usar esse script (comentado!) do PowerShell:

# 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

Salve como um arquivo .ps1 . Após habilitar a execução de scripts (consulte Habilitando scripts no wiki de tags do PowerShell ), você pode passar uma ou duas strings: o nome do executável e, opcionalmente, a linha de argumentos. Por exemplo:

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

Confirmo que isso funciona no Windows 10.

    
por 02.09.2016 / 00:20
1

Se você quiser que o programa de linha de comando seja executado sem que o usuário saiba, defina-o como um Serviço do Windows e ele será executado em um agendamento.

    
por 30.09.2011 / 16:00
1

É assim que meu servidor interno do PHP entra em segundo plano. Então, tecnicamente, deveria funcionar para todos.

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

Obrigado

    
por 09.07.2018 / 06:30
0

Uma resposta relacionada, com 2 exemplos:

  1. Abaixo, abre calc.exe:

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

  1. Às vezes, o primeiro plano não é desejável, então você executa minimizado como abaixo:

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

    
por 09.08.2017 / 07:08
-2

Um exemplo:

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

Inicia o grep no backgound redirecionar ambos os stdout & & stderr para log.txt

    
por 28.01.2014 / 15:09
-2

acabou de encontrar este tópico o windows 7, usando power shell, executa o executável em segundo plano, exatamente igual ao nome de arquivo unix &

exemplo: start -NoNewWindow filename

ajuda inicial

NAME     Start-Process

SYNTAX     Processo de início [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory     ] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput     ] [-RedirectStandardOutput] [-Wait] [-WindowStyle {Normal | Oculto |     Minimizado | Maximized}] [-UseNewEnvironment] []

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

ALIASES     Sucos     começar

    
por 14.07.2015 / 01:29
-2

Você pode ver a maneira correta de fazer isso neste link:

Como executar uma tarefa agendada Sem uma janela de comando aparecendo

Resumindo, você precisa marcar a caixa de seleção 'Executar se o usuário está logado ou não'. As credenciais do usuário da tarefa devem ser inseridas depois de pressionar 'Ok'.

    
por 03.09.2015 / 16:10