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

¿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?

Respuestas (10)

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

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
70
70
70
2011-09-30 11:44:07 +0000

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 &
40
40
40
2010-10-12 06:30:43 +0000

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 este

Dim 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”.

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

el anterior está bastante más cerca con su contraparte Unix program &

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

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.

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

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

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

Una respuesta relacionada, con 2 ejemplos:

  1. Abajo abre calc.exe:

llama a START /B “mi calc” “calc.exe”

  1. A veces el primer plano no es deseable, entonces corre minimizado como abajo:

llamar inicio /min “n” “notepad.exe”

llamar INICIO /MIN “mi mongod” “%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe”

Espero que eso ayude.

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

Si desea que el programa de la línea de comandos se ejecute sin que el usuario lo sepa, defínalo como un servicio de Windows y se ejecutará según un programa.

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

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

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

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