Como iniciar um aplicativo sem esperar em um arquivo em lotes?

156

Existe alguma maneira de executar um aplicativo sem esperar no arquivo em lotes? Eu tentei o startcomando, mas ele apenas cria uma nova janela de comando.

Mark Attwood
fonte
3
Nota - para aqueles que fazem coisas complicadas com scripts em lote do Windows: se um processo C é started dentro de um callarquivo .bat -ed B (que por sua vez foi chamado de A ) e C permanece aberto após a conclusão de B (por exemplo, C é um serviço ou algo que apenas espera que as coisas aconteçam e não tem um ponto de extremidade fixo até que o sistema operacional seja desligado), o pai A que continha o callpode não ser capaz de terminar conforme o esperado, a menos que o processo C seja fechado ou seja morto. Aqui está um exemplo simples: codepad.org/KLglXDnZ
SeldomNeedy 8/15/15

Respostas:

306

Estou fazendo um palpite aqui, mas sua startchamada provavelmente se parece com isso:

start "\Foo\Bar\Path with spaces in it\program.exe"

Isso abrirá uma nova janela do console, usando "\ Foo \ Bar \ Path com espaços nele \ program.exe" como título.

Se você usa startalgo que é (ou precisa ser) entre aspas, é necessário colocar aspas vazias como o primeiro argumento:

start "" "\Foo\Bar\Path with spaces in it\program.exe"

Isso ocorre porque startinterpreta o primeiro argumento citado encontrado como o título da janela para uma nova janela do console.

Joey
fonte
17
Ótima dica com aspas duplas antes do caminho real. Eu nunca teria adivinhado isso. Obrigado por compartilhar.
Alexandru Dicu 15/10/12
obrigado ajudou. Eu também usei / opção separada conforme mencionado na ss64.com/nt/start.html
Ayusman
1
@ Ayusman: Essas opções são apenas para programas de 16 bits. Eu certamente espero que você ainda não tenha nenhum desses.
Joey
4
Obviamente, não precisa haver aspas vazias ... você pode atribuir um título relevante. Eu recomendaria isso fortemente, pois tornará muito mais claro para outras pessoas que vêem o que está acontecendo. start "Obligatory Atavistic Window Title" "\Foo\Bar\Path with spaces in it\program.exe"
shiser
1
Depois de horas pesquisando no google, finalmente encontro a resposta. Obrigado!
Sellorio 27/10/14
9

Se o seu exe aceita argumentos,

start MyApp.exe -arg1 -arg2
Shital Shah
fonte
8

Eu usei start / b para isso em vez de apenas start e ele foi executado sem uma janela para cada comando, portanto não houve espera.

Ed Bayiates
fonte
Exatamente o que eu estava procurando!
Fábio Amorim
4

Se startnão consegue encontrar o que está procurando, faz o que você descreve.

Como o que você está fazendo deve funcionar, é muito provável que você deixe de lado algumas aspas (ou coloque extras).

egrunin
fonte
Sim, eu coloquei duas citações. Mas eles são necessários para o nome do caminho longo. Como resolver o problema?
Mark Attwood