startコマンドがファイルデスクリプタを引き継いでしまう

3つのスクリプトがあるとする。

  • a.bat は b.bat を実行し、そのエラー出力をログに保存する
  • b.bat はいろいろな処理をする過程で c.pl というデーモンを起動する
  • c.pl はデーモンなので終了しない
# a.bat
call b.bat 2>>error.log

# b.bat
start wperl c.pl

# c.pl
use AnyEvent;
my $cv = AE::cv;
...
$cv->recv; # 基本的に終了しない

この時、startで起動した c.pl の出力はリダイレクトされていないのにも関わらず、ログファイルが c.pl によって使用中になっていまう。a.bat としてはログを処理して処分したいが、Windowsにおいて開いているファイルは処分できないので困る。
startでも&2をリダイレクトしてみたが、古いデスクリプタを閉じてはくれないようだ。
a.bat であらかじめ c.pl を起動しておく以外に解決する方法はないのだろうか? まあ、トラブルメーカーなbatを止めるのがいいのだろう。