一个批处理命令的有关问题

一个批处理命令的问题
我要写一个批处理脚本,先后调用2个exe,成功的就写入日志到do.txt,我是这样写的

echo off
echo 执行TestD
start E:\qinsps\01_trunk\Bin\TestD.exe
if errorlevel == 0 (
  echo TestD成功
  echo TestD[%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%]>> do.txt
)
echo 执行TestE
start E:\qinsps\01_trunk\Bin\TestE.exe
if errorlevel == 0 (
  echo TestE成功
  echo TestE[%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%]>> do.txt
)
pause

我想问2点, 2处判断if的地方是否有问题?为什么我换成if %errorlevel% == 0 的时候TestE里面的判断就不进去了?但是TestE确实被执行了
2 我怎么知道TestD已经执行完成了,TestE和TestD都是我用VS2010写的测试程序

------解决方案--------------------
执行完成是指程序退出吗?
------解决方案--------------------
试试加 /wait 参数
------解决方案--------------------
errorlevel是固定的参数吧,表示你的程序的返回值的,加%是什么意思呢?没必要加这个%.
------解决方案--------------------
testde.bat的内容
start call testd.bat
start call teste.bat

testd.bat的内容:
echo off
echo 执行TestD
E:\qinsps\01_trunk\Bin\TestD.exe
if errorlevel 0 (
echo TestD成功
echo TestD[%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%]>> do.txt
)

teste.bat的内容:
echo off
echo 执行TestE
E:\qinsps\01_trunk\Bin\TestE.exe
if errorlevel 0 (
echo TestE成功
echo TestE[%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%]>> do.txt
)

------解决方案--------------------
是执行TestE的返回值,TestE如果是main程序正常退出返回0,那就是0了,如果TestE中错误返回-1的。那返回值就是-1.