比如bat文件中的命令是del D:\1.txt 
bat文件存放如D:\
用ShellExecute该如何执行?
ShellExecute(HWND_DESKTOP, "open" , "cmd", "D:\1.bat",  NULL, SW_HIDE);
这样对吗?可是执行不了如果bat文件中是个ping 命令,然后将ping的结果写入一个txt文件,又该如何写呢。

解决方案 »

  1.   

    ShellExecute(NULL,"open","D:\\1.bat",NULL,NULL,SW_HIDE);
      

  2.   

    如果bat文件中是个ping 命令,然后将ping的结果写入一个txt文件,又该如何写呢。写文件需要在.bat文件中作,
    ping 172.20.20.2 >> c:\test.txt
      

  3.   

    还有一个问题,如果bat所在的路径中有空格的话,能执行吗?
    比如:
    sprintf(lpszCmd, "/c %s","G:\\My Project\\jm.bat >> D:\\hello.txt");                            ~~~~~~~~~~~~~~~~
    ShellExecute(NULL, "open" , "cmd", lpszCmd, NULL, SW_HIDE);
    My Project中有空格,发现执行不了,是不是我哪里写错了。
      

  4.   

    有空格就这样:
    sprintf(lpszCmd,"/c \"%s\"","g:\\my Project\\jm.bat >> d:\\hello.txt");
    ShellExecute(NULL, "open" , "cmd", lpszCmd, NULL, SW_HIDE);有空格的参数用引号引起来就可以执行了:)
      

  5.   

    sprintf(lpszCmd,"/c \"%s\"","g:\\my Project\\jm.bat >> d:\\hello.txt");
    这样好像不行阿,得在g:\\my Project\\jm.bat 这里加引号吧。
    还有
    sprintf(lpszCmd, "/c %s","\"G:\\My Project\\jm.bat\" >>  \"D:\\in stall\\hello.txt\'");                            ~~~~~~~~~~~~~~~~                ~~~~~~~~~~~~~~~~~~~~~~
    ShellExecute(NULL, "open" , "cmd", lpszCmd, NULL, SW_HIDE);如果写入文件hello.txt的路径也有空格的话,该怎么办,上面的处理好像不行啊:(
      

  6.   

    接上,可是这样在dos下是可以执行的。
      

  7.   

    如果是这样的话,你最好使用没有空格的路径和文件名吧:)
    当你的路径是一个全路径时,先使用 GetShortPathName 得到一个短路径,然后再照上面的方法做就行了:)
      

  8.   

    如果参数中有空格需要引起来
    如:ping 127.0.0.1>"d:\pragma files\a.txt"
    放到一个字符串中可以这样:
    CString str="ping 127.0.0.1>\"d:\\pragma files\\a.txt\"";
    如果是bat的路径中存在空格
    CString str="cmd.exe /c \"d:\\pragma files\\a.bat\"";
      

  9.   

    sprintf(lpszCmd, "/c %s","G:\\My Project\\jm.bat >> D:\\hello.txt");
    不好意思再问一下,这里的/c 和%s分别是什么意思?