system("netsh trace start capture=yes tracefile=E:\\Temp");
请问是怎么回事,直接在命令行写没有错误啊.
如果将命令写成这样
system("netsh \"trace start capture=yes tracefile=E:\\Temp\" ");
我用CreateProcess也是一样的效果找不到命令,纳闷
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;
}