思路请问,有好建议均有分(有难度)

思路请教,有好建议均有分(有难度)
先说一下环境:
        小弟写了一个程序,目的通过手机短信上行至网关,接收后走socket流至指定服务器守候进程,对流数据包解析后,进行数据匹配,包体其中有一项需重启win2000   server操作系统上的一个tomcat进程
        问题出现在重启win2000   server操作系统上的一个tomcat进程代码,tomcat我采用启动它的start.bat方法,启动代码如下:
        Shell( "E:\tomcat\bin\start.bat ",1)  
        E:\tomcat\bin\start.bat这个文件,可以手动以鼠标方式运行成功,程序在先kill了tomcat进程后,再shell这个进程时,tomcat在桌面一闪就自己飞掉了,检查进程中也没有启动成功,检查bat文件发现,有虚目录存在,   start.bat全文如下:


        @echo   off
if   "%OS% "   ==   "Windows_NT "   setlocal
rem   ---------------------------------------
rem   Start   script   for   the   CATALINA   Server
rem
rem   $Id:   startup.bat,v   1.5   2004/03/28   06:40:44   mturk   Exp   $
rem   ---------------------------------------

rem   Guess   CATALINA_HOME   if   not   defined
set   CURRENT_DIR=%cd%
if   not   "%CATALINA_HOME% "   ==   " "   goto   gotHome
set   CATALINA_HOME=%CURRENT_DIR%
if   exist   "%CATALINA_HOME%\bin\catalina.bat "   goto   okHome
cd   ..
set   CATALINA_HOME=%cd%
cd   CURRENT_DIR
:gotHome
if   exist   "%CATALINA_HOME%\bin\catalina.bat "   goto   okHome
echo   The   CATALINA_HOME   environment   variable   is   not   defined   correctly
echo   This   environment   variable   is   needed   to   run   this   program
goto   end
:okHome

set   EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

rem   Check   that   target   executable   exists
if   exist   "%EXECUTABLE% "   goto   okExec
echo   Cannot   find   %EXECUTABLE%
echo   This   file   is   needed   to   run   this   program
goto   end
:okExec

rem   Get   remaining   unshifted   command   line   arguments   and   save   them   in   the
set   CMD_LINE_ARGS=
:setArgs
if   " "%1 " "== " " " "   goto   doneSetArgs
set   CMD_LINE_ARGS=%CMD_LINE_ARGS%   %1
shift
goto   setArgs
:doneSetArgs

call   "%EXECUTABLE% "   start   %CMD_LINE_ARGS%

:end  
   
         
        请教同事中C的高手,对方说有可能是运行代码时应将环境指定到bat所在的目录中,并说有85%可能,应是此问题,我在网上查了下,没任何方向,怎么在运行时将环境指定到bat所在的目录?是否通过环境变量中的path?vb中有类同于change_path这种的方法吗?有底层的api可以调用吗?tomcat还有其它方式启动吗?
      Shell( "E:\tomcat\bin\start.bat ",1)   这种方法中是否可以加启动参数,能解决此问题吗?


      我的另一种做法,已将bat放至win的启动组里,并改注册表,设为无密码直接重启操作系统,以win的重启动方式直接拉起进程,方法虽然可行,但收到socket包后,直接重启操作系统,则无法完成回包确认结果的短信下行方式


      对于以上问题,请教高手给些好的思路,本人现在有点茫然,呵呵,有益者均给分,问题能解决,立刻结贴

------解决方案--------------------
在你的vb程序中用chdrive、chdir改变缺省目录到start.bat所在的目录。
------解决方案--------------------
在 Shell( "E:\tomcat\bin\start.bat ",1) 这句中传个路径(也就是“E:\tomcat\bin”)给bat,再在bat中用传进来的参数更改路径。写成:
Shell( "E:\tomcat\bin\start.bat E:\tomcat\bin ",1)