我想用按钮实现一个功能,假设实现cmd命令行的增加文件夹功能,命令行就直接:mkdir d:\\zzzzz
就在d盘创建了一个zzzzz文件夹,我现在想用按钮实现这个功能。我试着用了
STARTUPINFO si = { sizeof(si) };   
PROCESS_INFORMATION pi;   
si.dwFlags = STARTF_USESHOWWINDOW;   
si.wShowWindow = TRUE; 
TCHAR cmdline[] =TEXT("mkdir\td:\\zzzz"); //H:\\VC\\T11\\zzz.txt
CreateProcess(NULL,cmdline,NULL,NULL,NULL,NULL,NULL,NULL,&si,&pi) ;
可是木有效果,或者换成打开zzz.txt文本也不行,是不是那地方写错了。求高手解答。
其实我做这个就是想实现一个软件的静默安装功能,目前只会用命令行代码实现。所以就只能先用一点小程序实验一下命令行的用法了,WinExec("mkdir\td:\\zzzz",SW_SHOW);也尝试过了。system("");倒是可以但是窗口不能隐藏,不符合要求。

解决方案 »

  1.   

    启动cmd.exe,然后参数用你的mkdir\td:\\zzzz
      

  2.   

    ShellExecute(NULL,_T("open"),_T("mkdir d:\\zzzz"), NULL, _T("d:\\"), SW_HIDE);
    这样应该可以
      

  3.   

    不行的。。第三个参数难道不应该用转义符吗?至少应该是_T("mkdir\td:\\\\zzz");
      

  4.   

    不行的。。第三个参数难道不应该用转义符吗?至少应该是_T("mkdir\td:\\\\zzz");
    吧莫非跟我用的开发工具有关,我用的VC6.0??今天出现了一个问题换了VS就解决了。明天我再试试吧
      

  5.   

    这样是可以的,具体怎么简化,就要测试实验了CFile fcmd;
    #define CMDLINE "mkdir d:\\zzzz\r\ndel Temp.cmd\r\n"
    if (fcmd.Open(_T("D:\\Temp.cmd"), CFile::modeCreate|CFile::modeReadWrite|CFile::shareDenyNone))
    {
    fcmd.Write(CMDLINE, strlen(CMDLINE));
    fcmd.Close();
    }
    ShellExecute(NULL,_T("open"),_T("d:\\Temp.cmd"), NULL, _T("d:\\"), SW_HIDE); 
      

  6.   

    把命令行改成这种形式试试 "start /b cmdline"
    比如 要执行的命令为 cmdline
    char buf[4096]="start /b ";
    strcat(buf,cmdline);
    CreateProcess(NULL,buf,NULL,NULL,NULL,NULL,NULL,NULL,&si,&pi) ;