START とパイプを一緒に使用するにはどうすればいいですか?

START とパイプを一緒に使用するにはどうすればいいですか?

もともと私はこのようなコマンドを持っていました(Linuxの場合)

daemon flag & app flag

しかし、Windowsではbcデーモンは終了せず、アプリは起動しません。そこで代わりにこれを書きました

start /B daemon flag & app flag

これは動作するようです。今、実行したいのですdaemon flag | app2 flagsが、私が開始するすべての操作で、デーモンが存在しないなどの問題が報告されます。 を入力するdaemon flag | app2 flagsfile.batstart /B file.bat代わりに希望どおりに動作するようです。しかし、それはハックっぽい感じがします。

daemon flag | app2 flagsバックグラウンドですぐに実行するにはどうすればよいですかapp flag? file.bat の回避策が唯一の選択肢ですか?

答え1

次のようにすれば望みどおりになると思います:

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

これにより、バックグラウンドで実行され、パイプを処理する新しいシェルが生成されますcmd。これは、バッチ ファイルの使用startと同等の Linux コマンドの両方によって暗黙的に実行されます。

app2と の両方が出力を生成する場合は当然混乱が生じますがapp、両方がコンソール入力を要求する場合はさらに混乱が生じます (Linux と Windows でも同様です)。

関連情報