Como usar START e pipe juntos?

Como usar START e pipe juntos?

Originalmente eu tinha um comando como este (no Linux)

daemon flag & app flag

No entanto, no Windows bc daemon nunca termina, o aplicativo nunca inicia. Então eu escrevi isso em vez disso

start /B daemon flag & app flag

Isso parece funcionar. Agora eu gostaria de correr daemon flag | app2 flags, mas tudo que faço reclama da inexistência do daemon e de outros problemas. Eu descubro se eu coloco daemon flag | app2 flagse file.bat, start /B file.batem vez disso, parece fazer o que eu quero. Mas isso parece hackeado.

Como executo daemon flag | app2 flagsem segundo plano e app flagimediatamente? Essa solução alternativa file.bat é minha única opção?

Responder1

Acho que o seguinte faz o que você deseja:

start /B %comspec% /c "daemon flag | app2 flags" & app flag

Isso dá uma nova encarnação do cmdshell, rodando em segundo plano e manipulando o pipe, o que é feito implicitamente tanto pelo uso de startum arquivo em lote quanto pelo comando equivalente do Linux.

É claro que haverá confusão se app2ambos appgerarem saída, e ainda mais confusão se ambos solicitarem entrada do console (igualmente verdadeiro para Linux e Windows).

informação relacionada