1

我编写了一个代码来生成翼型形状并使用外部程序作为评估工具对其进行评估。我还制作了一个批处理文件,该文件启动该程序执行翼型评估所需的一些批处理命令,然后关闭该程序....!

我在每个循环中进行了几次评估。我的问题是我找不到通过我的代码运行批处理文件的方法。我使用了下面显示的两种方法,但它们似乎都不能在 Visual Studio 2010 中工作。我用 C 编写代码,我收到 C:/Users/Angelos/Documents/CExperiments/BSplines/run.bat 不是内部的消息命令等等……!

你能检查一下并告诉我我在做什么错吗..?

谢谢

void XfoilCall()
{
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = ("C:/Users/Angelos/Documents/CExperiments/BSplines/run.bat");
ShExecInfo.lpParameters = ("");
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);


void XfoilCall()
{
system("C:/Users/Angelos/Documents/CExperiments/BSplines/run.bat");
}
4

2 回答 2

2

而是试试这个:

system("cmd C:/Users/Angelos/Documents/CExperiments/BSplines/run.bat");
于 2013-03-12T00:29:30.317 回答
2

您的斜杠方向错误(它们应该是反斜杠)并且需要转义。您还需要启动命令解释器 ( cmd.exe) 来处理批处理脚本。

ShExecInfo.lpFile = ("cmd.exe /c C:\\Users\\Angelos\\Documents\\CExperiments\\BSplines\\run.bat");
于 2013-03-12T00:31:57.093 回答