c++调用system函数调用系统命令报错

     system("netsh trace start capture=yes tracefile=E:\\Temp");

图片说明

请问是怎么回事,直接在命令行写没有错误啊.

如果将命令写成这样

     system("netsh \"trace start capture=yes tracefile=E:\\Temp\" ");

图片说明
这样的错误....

我用CreateProcess也是一样的效果找不到命令,纳闷

写成bat之后调用,还是不行:
图片说明

        if (0==strcmp("start", argv[1]))
        {
            /*
            cout << "开始收集数据" << endl;
            char Command[] = "F:\\start.bat";
            system(Command);
            */

            //STARTUPINFO si = { sizeof(si) };
            //PROCESS_INFORMATION pi;
            //TCHAR szCmdLine[] = TEXT("F:\\start.bat");
            //CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
            //system("pause");


            WinExec("F:\\start.bat", SW_SHOW);
        }

难道是我程序有问题?

按照 gonglibo 的代码,还是一样的问题,找不到命令。

最后怎么有个句号?如果不行可以试试system(“cmd 你的命令”);

system中,netsh后面的是参数。最好用引号。不然会当成命令,所以找不到

使用如下命令运行是没有问题的
char cmd[] = "netsh trace start capture=yes tracefile=E:\Temp";
if (!ExcuteCommand(cmd,SW_HIDE))
{
printf("ERR:ExecuteCommand(%s)",cmd);
}

//启动cmd执行 netsh命令,并等待命令结束

bool ExcuteCommand(char* pCommandParam,int showStatus)

{

int rc = 0;
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow =showStatus;
// 进程信息
PROCESS_INFORMATION pi;

// 创建进程
// 第二个参数是要启动的应用程序路径名,比如:C:/Test.exe
hx_plog("ExcuteCommand :%s",pCommandParam);
if (CreateProcess(NULL, (char*)pCommandParam, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) 
{ 
    // 等待新进程初始化完毕

    if(WaitForInputIdle(pi.hProcess, 20000) != 0)
    {
        //return false;
    }
    while(1)
    {
        rc=WaitForSingleObject(pi.hProcess,INFINITE);
        if(rc==WAIT_OBJECT_0) break;
        Sleep(1);
    }
    DWORD st;
    rc=GetExitCodeProcess(pi.hProcess,(LPDWORD)&st);    
    CloseHandle(pi.hProcess);       
    return true;
} 
return false;   

}