Como posso executar uma linha de comando do Windows em segundo plano, sem interagir com o usuário ativo?
Como posso executar uma linha de comando do Windows em segundo plano, sem interagir com o usuário ativo?
Respostas:
Sua pergunta é bastante vaga, mas há uma postagem no ServerFault que pode conter as informações necessárias. A resposta lá descreve como executar uma janela de arquivo em lotes oculta:
Você pode executá-lo silenciosamente usando um arquivo de script do Windows. O método Run permite executar um script no modo invisível. Crie um
.vbsarquivo como esteDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothinge agende. O segundo argumento neste exemplo define o estilo da janela. 0 significa "ocultar a janela".
É um pouco tarde, mas acabei de me deparar com essa pergunta enquanto procurava a resposta pessoalmente e encontrei o seguinte:
START /B program
qual, no Windows, é o mais próximo do comando Linux:
program &
No sistema HELP 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 vi com ele é que você tem mais de um programa gravando na janela do console, fica um pouco confuso e confuso.
Para que ele não interaja com o usuário, você pode redirecionar a saída para um arquivo:
START /B program > somefile.txt
start /B "" programentão ele trabalhou ...
Eu suspeito que você quer dizer: Execute algo em segundo plano e recupere a linha de comando imediatamente, com o programa iniciado continuando.
START "" program
Qual é o equivalente Unix de
program &
start? Ele não funciona sem ele (executa apenas uma nova instância de comando), mas starta ajuda da Microsoft não diz nada sobre isso, ele afirma que todos os parâmetros são opcionais (ou eu não o entendo).
startfunciona sem o parâmetro vazio para mim, mas parece que recebo conchas com uma configuração separada quando uso o parâmetro vazio, pois uma configuração que fiz quando não tinha o parâmetro vazio não é usada quando uso o parâmetro vazio. Gostaria de saber por que eles usam configurações separadas?
START "" programinicia um comando em um novo terminal para mim, enquanto program &no Unix executa o comando e imprime a saída no mesmo terminal.
START /MIN program
o acima está bem mais próximo com o seu homólogo do Unix program &
Você pode usar este 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-o como um .ps1arquivo. Depois de ativar a execução do script (consulte Habilitando scripts no wiki da tag PowerShell ), você pode transmitir uma ou duas cadeias: 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.
É assim que meu servidor interno PHP entra em segundo plano. Então, tecnicamente, deve funcionar para todos.
start /B "" php -S 0.0.0.0:8000 &
obrigado
Se você deseja 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 de acordo com uma programação.
schtaskscomando no Windows XP e superior (aviso: schtasksé complicado).
Uma resposta relacionada, com 2 exemplos:
chame START / B "my calc" "calc.exe"
chame START / MIN "meu mongod" "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"
call Start /MIN "c" "calc.exe"
SW_*para a CreateProcessWvia STARTUPINFO::wShowWindow(inclusive SW_HIDE).
Você pode ver a maneira correta de fazer isso neste link:
Como executar uma tarefa agendada sem aparecer uma janela de comando
Resumindo, você deve marcar a caixa 'Executar se o usuário estiver conectado ou não'. As credenciais do usuário da tarefa devem ser inseridas após pressionar 'Ok'.
acabei de encontrar esse tópico O Windows 7, usando o Power Shell, executa executáveis em segundo plano, exatamente o mesmo que o nome do arquivo unix &
exemplo: start -NoNewWindow filename
ajudar a começar
NAME Processo inicial
Processo de inicialização SYNTAX [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStand] [-WindowStyle {Normal | Oculto | Minimizado | Maximizado}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ALIASES iniciam saps