標準入力のリダイレクトは < で行うのですがこれは本来 0< の略記なのです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231093/
たとえば un*x のコンソール上では
$ cat hoge.txt
Hoge!
$ cat 0<hoge.txt
Hoge!
$ // と、このように同じ動作をするのが正常な動きでありんす。
んで XP/2000 のコマンドプロンプトである cmd.exe もこの表記を受け付けます。
D:\MYWORK>cat 0<hoge.txt
Hoge!
D:\MYWORK>
なので app.exe target.dat 0<source.dat は本質的に正しい入力であって、
期待したとおりに動くはずです。実際俺のところでは cmd.exe bash.exe の両方で
このように0<と手入力しても期待通りの正しい動きをします。
さてここまで納得していただけたでしょうか。この例の場合、バッチファイル中には
< としか書いていないリダイレクト記号を、誰かが勝手に
(make がやっているのか cmd.exe がやっているのか、他の誰かかは不明)
0< と置換しているわけです(実害ないけど妙なことをやってるよね・・・)
0< となっていても俺んとこでは期待通り動作しています。
なので 0< となるのは「実行できない」の原因ではないと思われまっする。
「実行できない」の詳細について記載がないのでこれ以上の判断は出来ません。
本体プログラム側のバグを疑ってください。