Eu gostaria de executar um aplicativo específico (vamos chamá-lo foo
) a partir da linha de comando, mas não quero que ele atrapalhe o terminal, colocando qualquer lixo no terminal a partir de sua saída ou fluxos de erro, e também quero que ele mantenha rodando mesmo se eu fechar o terminal. No Bash, posso fazer isso usando (foo &>/dev/null &)
, mas não sei como faria isso no shell do Windows. Alguém poderia me ajudar, por favor?
Responder1
A maneira como você faria isso no Windows é:
start /B foo > NUL 2>&1
O start
comando iniciará um processo desanexado, um efeito semelhante ao &
. A /B
opção impede start
a abertura de uma nova janela de terminal se o programa que você está executando for um aplicativo de console (é desnecessário para aplicativos GUI). The >
tem o mesmo significado que no Linux e NUL
é equivalente no Windows a /dev/null
. O 2>&1
nofimirá redirecionar stderr para stdout, que irá todos para NUL
.
Responder2
Não há equivalente direto.
Conforme descritoaqui, chamar um programa de forma que não bloqueie o chamador pode ser feito com o start
comando, usando a /b
opção. Não sei sobre o redirecionamento de saída neste caso. Talvez seja necessário envolvê-lo em um arquivo em lote.
Quanto a > /dev/null
, é fácil: >NUL
. NUL
é um nome de dispositivo DOS. O operador abreviado, entretanto, não está disponível. Você terá que seguir o caminho manual com 2>&1
.Aquiaqui estão mais algumas informações sobre isso.