Como usar o START e o pipe juntos?

2

Originalmente eu tinha um comando assim (no linux)

daemon flag & app flag

No entanto, no windows bc daemon nunca termina app nunca começa. Então eu escrevi isso ao invés

start /B daemon flag & app flag

Isso parece funcionar. Agora eu gostaria de correr daemon flag | app2 flags mas tudo o que faço começa a reclamar sobre o daemon que não existe e outros problemas. Eu descubro se coloco daemon flag | app2 flags em file.bat e start /B file.bat em vez disso, parece fazer o que eu quero. Mas isso parece hackish.

Como eu corro daemon flag | app2 flags no fundo e app flag imediatamente? Essa solução file.bat é minha única opção?

Karan
fonte
@ linuxdev2013: Por que você está adicionando a tag do PowerShell quando o OP não indicou que ele está usando o PowerShell?
Karan
1
Qual é o erro exato que você vê quando executa start /b daemon flag | app2 flags?
Karan
Você já tentou embrulhar tudo entre aspas duplas start /b "daemon flag | app2 flags" ?
Julian Knight
@JulianKnight: Sim, é assim que recebo a reclamação sobre o daemon não existente
1
Você não explicou realmente por que você quer usar START /B de qualquer forma. De onde você está chamando isso e por que desse jeito? Por que não apenas executar o arquivo em lote, que parece ser muito mais simples e, na verdade, Menos "hackish".
Julian Knight

Respostas:

0

Eu acho que o seguinte faz o que você quer:

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

Isto dá uma nova encarnação do cmd shell, rodando em background e manipulando o pipe, o que é feito implicitamente tanto pelo uso de start com um arquivo em lote e pelo comando equivalente do Linux.

Haverá, é claro, confusão se app2 e app ambos geram saída, e ainda mais confusão se ambos requisitarem a entrada do console (igualmente verdade no Linux e no Windows).

AFH
fonte