¿Cómo puedo ejecutar una línea de comandos de Windows en segundo plano?
¿Cómo puedo ejecutar una línea de comandos de Windows en segundo plano, sin que interactúe con el usuario activo?
¿Cómo puedo ejecutar una línea de comandos de Windows en segundo plano, sin que interactúe con el usuario activo?
Esto es un poco tarde pero me encontré con esta pregunta mientras buscaba la respuesta yo mismo y encontré esto:
START /B program
que, en Windows, es lo más cercano al comando de Linux:
program &
Desde el sistema de ayuda de la consola:
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.
Un problema que vi con esto es que tienes más de un programa escribiendo en la ventana de la consola, se vuelve un poco confuso y desordenado.
Para que no interactúe con el usuario, puedes redirigir la salida a un archivo:
START /B program > somefile.txt
Sospecho que te refieres a: Ejecute algo en el fondo y recupere la línea de comando inmediatamente con el programa lanzado continuando.
START "" program
Que es el equivalente Unix de
program &
Su pregunta es bastante vaga, pero hay un post en ServerFault que puede contener la información que necesita. La respuesta allí describe cómo ejecutar una ventana de archivo por lotes oculto:
Podrías ejecutarlo silenciosamente usando un archivo Script de Windows en su lugar. El método de ejecución le permite ejecutar un script en modo invisible. Cree un archivo
.vbs
como esteDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothing
y prográmelo. El segundo argumento de este ejemplo establece el estilo de la ventana. 0 significa “ocultar la ventana”.
START /MIN program
el anterior está bastante más cerca con su contraparte Unix program &
Puedes usar este (¡comentado!) script de 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
Guárdalo como un archivo .ps1
. Después de habilitar la ejecución del script (ver Habilitar Scripts en la etiqueta de PowerShell wiki ), puede pasarle una o dos cadenas: el nombre del ejecutable y opcionalmente la línea de argumentos. Por ejemplo:
.\hideproc.ps1 'sc' 'stop SomeService'
Confirmo que esto funciona en Windows 10.
Así es como mi servidor interno de PHP pasa a segundo plano. Así que técnicamente debería funcionar para todos.
start /B "" php -S 0.0.0.0:8000 &
Gracias
Una respuesta relacionada, con 2 ejemplos:
llama a START /B “mi calc” “calc.exe”
llamar inicio /min “n” “notepad.exe”
llamar INICIO /MIN “mi mongod” “%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe”
Espero que eso ayude.
Puedes ver la forma correcta de hacerlo en este enlace: Cómo ejecutar una tarea programada sin que aparezca una ventana de comandos
Resumiendo, tienes que marcar la casilla de ‘Ejecutar tanto si el usuario está conectado como si no’. Las credenciales del usuario de la tarea deben ser ingresadas después de presionar ‘Ok’.
Acabo de encontrar este hilo en Windows 7, usando power shell, ejecuta los ejecutables en el fondo, exactamente igual que unix filename &
ejemplo: start -NoNewWindow filename
help start
NAME Start-Process
SYNTAX Start-Process [-FilePath] [[-ArgumentList] ] [-Credencial] [-Directorio de Trabajo] [-Cargar Perfil de Usuario] [-NoNuevaVentana] [-Pasar a través de] [-Error Estándar Redirecto] [-Entrada Estándar Redirecta] [- RedireccionarSalidaEstándar] [-Espera] [-Estilo Ventana {Normal | Oculto | Minimizado | Maximizado}] [-UsoNuevoMedioambiente] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ALIASES saps start