2010-10-12 06:09:11 +0000 2010-10-12 06:09:11 +0000
174
174

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

Como posso executar uma linha de comando do Windows em segundo plano, sem que interaja com o utilizador activo?

Respostas (10)

257
257
257
2013-05-03 14:28:39 +0000

Isto é um pouco tarde, mas eu próprio me deparei com esta pergunta enquanto procurava a resposta e encontrei isto:

START /B program

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

program &

A partir da consola HELP:

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 vi com ele é que tem mais do que um programa a escrever na janela da consola, fica um pouco confuso e confuso.

Para que não interaja com o utilizador, pode redireccionar a saída para um ficheiro:

START /B program > somefile.txt
70
70
70
2011-09-30 11:44:07 +0000

Suspeito que se refira a si: Executar algo em segundo plano e recuperar imediatamente a linha de comando com o programa lançado a continuar.

START "" program

Que é o equivalente Unix de

program &
40
40
40
2010-10-12 06:30:43 +0000

A sua pergunta é bastante vaga, mas existe um post no ServerFault que pode conter as informações de que necessita. A resposta lá descreve como executar uma janela de arquivo de lote oculta:

Você poderia executá-lo silenciosamente usando um arquivo Windows Script em seu lugar. O método Run permite correr um script em modo invisível. Crie um ficheiro .vbs como este:

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

e agende-o. O segundo argumento neste exemplo define o estilo da janela. 0 significa “esconder a janela”.

15
15
15
2012-09-13 06:55:32 +0000
START /MIN program

o acima referido está bastante mais próximo com o seu equivalente Unix program &

7
7
7
2016-09-01 22:20:49 +0000

Pode usar este (comentado!) 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

Guarde-o como um ficheiro .ps1. Após activar a execução do script (ver Activar Scripts em a tag PowerShell wiki ), pode passar-lhe uma ou duas cadeias de caracteres: o nome do executável e, opcionalmente, a linha de argumentos. Por exemplo:

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

Eu confirmo que isto funciona no Windows 10.

3
3
3
2018-07-09 04:30:36 +0000

É assim que o meu servidor interno PHP passa para segundo plano. Portanto, tecnicamente deve funcionar para todos.

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

Obrigado

2
2
2
2017-08-09 05:08:06 +0000

Uma resposta relacionada, com 2 exemplos:

  1. Abaixo abre-se calc.exe:

call START /B “my calc” “calc.exe”

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

call start /min “n” “notepad.exe”

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

Esperança que ajuda.

1
1
1
2011-09-30 14:00:42 +0000

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

-1
-1
-1
2015-09-03 14:10:25 +0000

Pode ver a forma correcta de o fazer neste link: Como executar uma tarefa agendada sem aparecer uma janela de comandos

Summarizing, tem de marcar a caixa de verificação para “Executar se o utilizador está ligado ou não”. As credenciais do utilizador da tarefa devem ser introduzidas após premir ‘Ok’.

-2
-2
-2
2015-07-13 23:29:17 +0000

acabou de se deparar com esta janela de rosca 7 , usando a shell de alimentação, executa executáveis em segundo plano, exactamente como o nome de ficheiro unix &

exemplo: start -NoNewWindow filename

ajuda a iniciar

NOME Início-Processo

SYNTAX Início-Processo [-FilePath] [[-ArgumentList] ] [-Credencial] [-Directório de Trabalho] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-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