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?
Como posso executar uma linha de comando do Windows em segundo plano, sem que interaja com o utilizador activo?
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
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 &
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”.
START /MIN program
o acima referido está bastante mais próximo com o seu equivalente Unix program &
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.
É 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
Uma resposta relacionada, com 2 exemplos:
call START /B “my calc” “calc.exe”
call start /min “n” “notepad.exe”
call START /MIN “my mongod” “%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe”
Esperança que ajuda.
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’.
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