你确认几个事情。
1,文件路径,你可以先用绝对路径试一试。
2. 确认你的参数是不是都OK。
3. bat不是个可执行文件,是要用cmd.exe执行它把?

解决方案 »

  1.   

    ShellExecute调用cmd.exe,bat文件作为参数来执行
      

  2.   

    不是很大明白, ShellExecute调用cmd.exe,bat文件作为参数来执行,ShellExecute(NULL, "explore", "c:\windows\system32\cmd.exe","ansys.bat", NULL, SW_SHOW);这样改也不能调用
    ShellExecute函数原型及参数含义如下:
    ShellExecute(
    HWND hwnd, //父窗口句柄
    LPCSTR lpOperation, //操作类型
    LPCSTR lpFile, //要进行操作的文件或路径
    LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL
    LPCSTR lpDirectory, //指定默认目录,通常设为NULL
    INT nShowCmd //文件打开的方式,以通常方式还是最大化或最小化显示
    )   我那样对应写的ShellExecute不对吗
      

  3.   

    bat是可以直接打开的,以前也这样干过。
    应该是路径问题。
    就是你的程序没有找到该bat文件。
      

  4.   

    不对,命令动词不对,explore是指在资源管理器中显示,而不是执行。不写"explore",用NULL就行了。
      

  5.   

    我都直接System(“执行语句”)屡试不爽
      

  6.   

    一整个文件也可以使用System的。
    直接执行文件也可以的。
      

  7.   

    对于发帖人的问题,我的方法如下:将你的"ansys.bat"文件放到工程目录下,在你的OnRadio()消息响应函数里,加入ShellExecute(NULL, "open", "c:\windows\system32\cmd.exe","ansys.bat", NULL, SW_SHOW); 编译执行后,点击Radio按钮,会弹出CMD命令行,而且此时显示的路径是你的MFC工程的路径,键入ansys.bat,然后回车,即可执行你的批处理文件。但这里有个问题是必须将ansys.bat批处理文件放到工程目录下,才能达到以上的效果,感觉有点受限。也希望大家共同探讨更好的解决方法。
      

  8.   

    在你的批处理文件中最后一行,加上pause,看下现象。我和你之前要解决的问题是一样的,只是现在弹出一个CMD框,需要我键入批处理文件名。
      

  9.   

                                                               我的弄出来了,谢谢了,我的问题我觉得可能是WIN7装的C++有点问题吧,每次改后必须重新打开再在里面写,否则就一直有错,开始不知道一直改,每次都有错,现在重新打开后改的就没事了,哈
      
      

  10.   

       回想一下其实挺简单的,我觉得可能是在win7系统上装的c++有点问题吧,当时试了好几种方法都没实现,隔了几天在用又出了个新问题,调用的ansys.bat里是输入txt文件的,但是现在能调用,但是txt文件一直是空的,出不来结果,不知道哪又出错了,麻烦问下你会吗‘
      

  11.   

    ShellExecute(NULL,_T("open"),WorkDir1,NULL,WorkDir,SW_SHOW );
    在测试的时候是可以的,发布到jsp页面中,工作路径就不起作用了,这是怎么回事??
      

  12.   

    ShellExecuteW(NULL, NULL, _T("C:\\xx.bat"),NULL, NULL, SW_SHOW);
    ShellExecuteW(NULL, _T("open"), _T("C:\\xx.bat"),NULL, NULL, SW_SHOW);
    system("C:\\xx.bat");
    我试了以上三种形式都能执行.bat文件,但是,即使有.bat文件最后有pause语句,窗口也只是一闪而过,请问有人知道为什么?