嘿,我只是想知道这可以运行多个CMD命令吗?我还没有测试过这个。
//multiple commands
System::Diagnostics::Process ^process = gcnew System::Diagnostics::Process();
System::Diagnostics::ProcessStartInfo ^startInfo = gcnew System::Diagnostics::ProcessStartInfo();
//startInfo->WindowStyle = System::Diagnostics::ProcessWindowStyle::Hidden;
startInfo->FileName = "cmd.exe";
startInfo->Arguments = "/C powercfg -attributes SUB_PROCESSOR 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 -ATTRIB_HIDE";
startInfo->Arguments = "/C powercfg -attributes SUB_PROCESSOR 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 -ATTRIB_HIDE";
process->StartInfo = startInfo;
process->Start();
或者startInfo
一次只能使用一个参数吗?如果是这样,我怎么能在不创建.bat
文件并执行它的情况下执行多个命令。
答案 0 :(得分:0)
您编写的代码执行它的操作。它首先将Arguments
设置为一个值,然后用另一个值覆盖它。所以Start()
只执行第二个命令。
我建议创建一个辅助函数(或方法):
void RunPowerCfg(System::String ^id)
{
System::Diagnostics::Process ^process = gcnew System::Diagnostics::Process();
System::Diagnostics::ProcessStartInfo ^startInfo =
gcnew System::Diagnostics::ProcessStartInfo();
startInfo->FileName = "cmd.exe";
startInfo->Arguments = System::String::Format(
"/C powercfg -attributes SUB_PROCESSOR {0} -ATTRIB_HIDE", id);
process->StartInfo = startInfo;
process->Start();
}
void main()
{
RunPowerCfg("12a0ab44-fe28-4fa9-b3bd-4b64f44960a6");
RunPowerCfg("40fbefc7-2e9d-4d25-a185-0cfd8574bac6");
}
根据您的目的,您可能需要在启动后致电process->WaitForExit()
。
答案 1 :(得分:0)
这不起作用。这段代码:
stratInfo->Arguments = "/C powercfg -attributes SUB_PROCESSOR 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 -ATTRIB_HIDE";
stratInfo->Arguments = "/C powercfg -attributes SUB_PROCESSOR 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 -ATTRIB_HIDE";
没有设置两个参数。它设置参数字符串,然后覆盖它。
如果您想要运行两次,则必须执行以下操作:
void RunProc(System::String ^arguments)
{
System::Diagnostics::Process ^process = gcnew System::Diagnostics::Process();
System::Diagnostics::ProcessStartInfo ^startInfo = gcnew System::Diagnostics::ProcessStartInfo();
startInfo->FileName = "cmd.exe";
startInfo->Arguments = arguments;
process->StartInfo = startInfo;
process->Start();
}
RunProc("/C powercfg -attributes SUB_PROCESSOR 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 -ATTRIB_HIDE");
RunProc("/C powercfg -attributes SUB_PROCESSOR 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 -ATTRIB_HIDE");
当然,您需要为此添加错误处理等,尤其是对于当前进程没有正确权限的情况。