¿Puedo ejecutar un programa GUI en segundo plano en la línea de comandos de Windows?

13

Por ejemplo, en Bash, puedo hacer esto:

emacs foo.txt &

¿Hay algún equivalente en Windows? Parece que no puedo encontrar una manera de hacer esto con la versión de Windows de emacs.

Jason Baker
fuente

Respuestas:

21

El comando para iniciar programas desde la línea de comandos en Windows es "iniciar"

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]
      [/AFFINITY <hex affinity>] [/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
    I           The new environment will be the original environment passed
                to the cmd.exe and not the current environment.
    MIN         Start window minimized
    MAX         Start window maximized
    SEPARATE    Start 16-bit Windows program in separate memory space
    SHARED      Start 16-bit Windows program in shared memory space
    LOW         Start application in the IDLE priority class
    NORMAL      Start application in the NORMAL priority class
    HIGH        Start application in the HIGH priority class
    REALTIME    Start application in the REALTIME priority class
    ABOVENORMAL Start application in the ABOVENORMAL priority class
    BELOWNORMAL Start application in the BELOWNORMAL priority class
    AFFINITY    The new application will have the specified processor
                affinity mask, expressed as a hexadecimal number.
    WAIT        Start application and wait for it to terminate

Es posible que desee utilizar la opción MIN para iniciar un programa minimizado

Kevin Kuphal
fuente
2
Para su información, el comando correcto en este caso es "start / B emacs foo.txt". De lo contrario, se ejecuta en su propia ventana de consola, lo cual es aceptable, pero molesto. :-)
Jason Baker
3

No sé si será suficiente, pero intenta

start emacs foo.txt

No entrará en segundo plano, sino que iniciará una ventana cmd.exe separada para el comando.

kubanczyk
fuente
2

HaHa, lo logré. Usar mi sublime text3 como servidor de vista previa de rebajas es mi propuesta, después de cerrar la ventana de sublime text, no trabajaré. Probaría muchos métodos, por fin funciona. primero, debes crear un murciélago para iniciar este programa.

start  /B "" "D:\dev\sublime3\Sublime Text 3\subl.exe" "-s" "%USERPROFILE%\Dropbox\dev\apis\*.markdown" 

segundo, ejecute este bate por tarea programada.

run window+R->taskschd.msc->add a task

agregue un disparador para ejecutar este bate de acuerdo con este cronograma

agrega este bate como una operación para ejecutar

Este resultado es que funciona para evitar mostrar la ventana de texto sublime. Y funciona en conflicto con el texto sublime normalmente abierto.

Tal vez lo hayas adivinado, utilizo el OmniMarkupPreviewercomplemento para obtener una vista previa de la rebaja. Solucioné este error (o la característica no perfecta) que usa una identificación de vista diferente cada vez.

vincent
fuente
1

Depende de la versión de Windows que esté usando.

En Vista, debería poder escribir el nombre del exe en su ruta y tenerlo activo después de que se cierre el símbolo del sistema.

MathewC
fuente
1

Lamentablemente no creo que esto sea posible.

Puede hacer esto en un script de Windows Scripting Host, con algo como:

Set oShell = WScript.CreateObject("WScript.Shell")
Set oProc = oShell.Run "<your command here>",0,True

Donde el "0" indica que la ventana resultante debe estar oculta (para otras opciones, consulte la documentación en http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx ) y el " verdadero "indica que desea esperar a que se complete el comando antes de que su script continúe.

Sería un ejercicio simple resumir esto en un script genérico de "ejecutar este comando oculto" que podría usar desde la línea de comandos.

Si tiene instalado el nuevo PowerShell nuevo de Microsoft, entonces puede haber una manera más fácil de hacerlo (todavía no he trabajado con PowerShell).

Si está contento de minimizar la ventana, puede hacerlo con el comando "inicio" que otra mención. Desafortunadamente, la opción "/ B" (que suena como si fuera lo que desea) es solo para comandos y no detiene las aplicaciones en ventana que aparecen en la pantalla.

Nota: cualquiera de los anteriores que utiliza para iniciar un programa con una ventana principal oculta / minimizada, no hay nada que lo detenga creando nuevas ventanas que sean visibles, o que la ventana principal esté enfocada, una vez que se esté ejecutando.

David Spillett
fuente
1

sc create service y ejecutarlo tiene caracteres especiales en el archivo y parámetros, por ejemplo

sc create ngrok "cmd /c \"c:\tmp\ngrok.exe\" http 80" type=own type=interactive
Lalo
fuente
1
sc create nrgok binpath = "cmd / c \" c: \ tmp \ ngrok.exe \ "http 80" type = own type = interact
Lalo