我用SHELL来运行指定的.BAT文件,为什么窗口只是闪了一下却没有运行呢?我打开控制面板里的服务查看运行的项目,确实没看到.我的代码:
Option Explicit    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess _
     As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess _
     As Long, ByVal uExitCode As Long) As Long
    Dim x
     
    Private Sub Command1_Click()
     x = Shell("D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\startup.bat", 1)
    End Sub
     
    Private Sub Command2_Click()
    x = Shell("COMMAND.COM D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\shutdown.bat", 1)
    End Sub

解决方案 »

  1.   

    这样:x = Shell("COMMAND.COM /k D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\shutdown.bat", 1)添加k参数,详细请参考command.com的帮助
      

  2.   

    命令模式窗口是打开而且没有关闭了,但里面只有下列两句内容:Bad command or file name
    D:\MICROSOFT VISUAL STUDIO\VB98>我用鼠标双击D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\shutdown.bat是能够运行的,这是咋回事儿呢?
      

  3.   

    请把startup.bat、shutdown.bat里面的内容贴上来,另外,楼主用什么系统???
      

  4.   

    startup.bat:
    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :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
    :okHomeset EXECUTABLE=%CATALINA_HOME%\bin\catalina.batrem 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
    :okExecrem 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
    :doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end
    shutdown.bat:
    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Stop script for the CATALINA Server
    rem
    rem $Id: shutdown.bat,v 1.5 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :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
    :okHomeset EXECUTABLE=%CATALINA_HOME%\bin\catalina.batrem 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
    :okExecrem 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
    :doneSetArgscall "%EXECUTABLE%" stop %CMD_LINE_ARGS%:end
    我用的是Windows 2000 AdvanceServer
      

  5.   

    ??????????你在用tomcat???????
    简单看了一下,应该就是jlum99(闲人)兄说的路径问题,试试:
    方法1:先在dos中(最好在autoexec.bat中)将所有要用到的路径先用set设置一下,例如:c:\>set CATALINA_HOME=c:\tomcat5
    方法2:把bat中"%CATALINA_HOME%\bin\catalina.bat"之类的路径改为全路径如:"c:\tomcat5\bin\catalina.bat",再做适当修改方法1一劳永逸,文件夹位置改变的时候只需要修改autoexec就可以了。。但每次开机都要运行autoexec。。
    方法2比较死板,文件夹位置改变后又得从新修改bat文件
      

  6.   

    to:lsftest() 
    设置了,还是只有下列两句内容:Bad command or file name
    D:\MICROSOFT VISUAL STUDIO\VB98>to:csdnzm(明飞) 
    你那里可以吗?你能说说你是怎么改的吗?
      

  7.   

    改成:
    x = Shell("CMD.EXE /C D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\shutdown.bat", 1)
      

  8.   

    to:lsftest() 
    设置了,还是只有下列两句内容:
    =====================
    你在dos窗口下运行set命令,看有没有CATALINA_HOME的路径???
      

  9.   

    to:jadeluo(秀峰) 
    你说的方法,窗口只是一闪就没有了to:lsftest()有
      

  10.   

    在bat文件中添加echo命令,看是在哪句出问题。
      

  11.   

    to:lsftest() 
    ??我不会老大,能帮忙试一下吗?先谢了
      

  12.   

    例如把startup.bat改成这样:rem @echo off
    echo 0
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not definedif not "%CATALINA_HOME%" == "" goto gotHome
    echo 1
    set CATALINA_HOME=.
    echo 2
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo 3
    set CATALINA_HOME=..
    echo 4
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo 5
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHomeset EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat
    echo 6
    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
    :okExecrem 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
    :doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%
    echo 7
    :end如果你在dos窗口中连0字都看不见就是其他的问题了。
      

  13.   

    to: lsftest() 的确看不到阿,怎么办?
      

  14.   

    to: lsftest() 的确看不到阿,怎么办?
    ========================
    那就是说,你根本连startup.bat都没有运行。
    检查一下你的路径是否有问题吧。在
     x = Shell("D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\startup.bat", 1)
    之前,先检查一下
    dir("D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\startup.bat")
    的值吧。
      

  15.   

    想起来了,你用的是2000,在2000里已经用cmd.exe代替command.com了
    所以你调用的时候应该是:x = Shell("CMD.exe /k D:\JBuilderX\thirdparty\jakarta-tomcat-4.1.27-LE-jdk14\bin\startup.bat", 1)