c++运行批处理文件而不重定向输出

C++ Run Batch File Without Redirecting Output

本文关键字:重定向 输出 运行 批处理文件 c++      更新时间:2023-10-16
tempString = (string("cmd.exe /C "") + tempString + """);
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
CreateProcess(NULL, (LPSTR)tempString.c_str(), 0, 0, FALSE, CREATE_UNICODE_ENVIRONMENT, NULL, 0, &si, &pi);

我正在通过dll从另一个进程内开始批处理脚本。问题是进程显示:

错误:不支持输入重定向,退出进程立即.

如何启动批处理脚本,使其独立于调用进程(当calllee关闭时不会关闭)并且不在调用进程的控制台中输出?

如果您不想在执行命令字符串时显示控制台窗口,您可以这样做:

tempString = (string(" /C "") + tempString + """);
ShellExecute(NULL, NULL, "cmd.exe", tempString.c_str(), NULL, SW_HIDE);

CREATE_NEW_CONSOLE标志为进程分配一个新的控制台,以便它不使用与调用进程相同的标准输出。