Posso executar um programa GUI em segundo plano na linha de comando do Windows?

12

Por exemplo, no Bash, eu posso fazer isso:

emacs foo.txt &

Existe algum equivalente no Windows? Não consigo descobrir uma maneira de fazer isso com a versão para Windows do emacs.

Jason Baker
fonte

Respostas:

20

O comando para iniciar programas a partir da linha de comando no Windows é "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]
      [/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

Você pode usar a opção MIN para iniciar um programa minimizado

Kevin Kuphal
fonte
1
Para sua informação, o comando correto neste caso é "start / B emacs foo.txt". Caso contrário, ele será executado em sua própria janela do console, o que é aceitável, mas irritante. :-)
Jason Baker
3

Não sei se será suficiente, mas tente

start emacs foo.txt

Ele não entrará em segundo plano, mas iniciará uma janela separada do cmd.exe para o comando.

kubanczyk
fonte
2

HaHa, eu consegui. Usar o texto sublime3 como um servidor de visualização de remarcação é a minha proposta, depois que fechei a janela do texto sublime, não funcionava. Eu tentaria muitos métodos, finalmente funciona. primeiro, você deve criar um bastão para iniciar este programa.

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

sencond, execute este bastão agendando tarefas.

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

adicione um gatilho para executar este bastão de acordo com este cronograma

adicione este bastão como uma operação para executar

Esse resultado é que ele trabalha para evitar mostrar a janela de texto sublime. E funciona em conflito com o texto sublime normalmente aberto.

Talvez você tenha adivinhado, eu uso o OmniMarkupPreviewerplug-in para visualizar o markdown.

vincent
fonte
1

Depende da versão do Windows que você está usando.

No Vista, você poderá digitar o nome do exe no seu caminho e deixá-lo ativo após o prompt de comando ser fechado.

MathewC
fonte
1

Infelizmente, não acho que isso seja possível.

Você pode fazer isso em um script do Windows Scripting Host, com algo como:

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

Onde o "0" indica que a janela resultante deve estar oculta (para outras opções, consulte a documentação em http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx ) e " true "afirma que você deseja aguardar a conclusão do comando antes que o script continue.

Seria um exercício simples encerrar isso em um script genérico "execute este comando oculto" que você poderia usar na linha de comando.

Se você tiver o novo PowerShell da Microsoft instalado, pode haver uma maneira mais fácil de fazer isso (ainda não trabalhei com o PowerShell).

Se você está feliz por ter a janela minimizada, você pode fazer isso com o comando "start" que outra menção. Infelizmente, a opção "/ B" (que parece o que você deseja) é apenas para comandos e não impede que aplicativos em janelas apareçam na tela.

Nota: qual das opções acima você usa para iniciar um programa com uma janela principal oculta / minimizada, não há nada para impedi-lo de criar novas janelas visíveis ou colocar a janela principal em foco, uma vez que esteja em execução.

David Spillett
fonte
1

sc create service e executá-lo possui caracteres especiais no arquivo e parâmetros, por exemplo

sc create ngrok "cmd /c \"c:\tmp\ngrok.exe\" http 80" type=own type=interactive
Lalo
fonte
1
sc create nrgok binpath = "cmd / c \" c: \ tmp \ ngrok.exe \ "http 80" tipo = próprio tipo = interage
Lalo