start コマンドを使い、非同期でプログラムを実行するバッチを作成し、そのバッチの出力をパイプすると、実行したプログラムが終了するまでパイプの処理が返らない。
pause.cmd
@echo pause
@exit /b
process.cmd
@echo off
Echo 処理1開始
Rem 処理1
Echo 処理2開始
start "" cmd /s /c "pause.cmd"
exit /b
と作成し、コマンドプロンプトで単に
process.cmd
とすれば、pause.cmd を閉じなくても次の処理に進めるのだが、
process.cmd | sort
などとパイプしたとたん、処理が返らなくなってしまう。
これの対処法はいくつかある。 続きを読む