我所要做的就是发送一个命令,用program.exe打开一个模型 假设超级简单!使用C执行命令行#
例:
"C:\Program Files (x86)\River Logic\Enterprise Optimizer 7.4 Developer\EO74.exe" "C:\PauloXLS\Constraint Sets_1.cor"
上面的线工作良好,如果在命令提示窗口上粘贴。 但是,试图通过对我的代码完全相同的字符串时,它被贴在C:\ PROGRAM
string EXE = "\"" + @tbx_base_exe.Text.Trim() + "\"";
string Model = "\"" + @mdl_path.Trim()+ "\"";
string ExeModel = EXE + " " + Model;
MessageBox.Show(ExeModel);
ExecuteCommand(ExeModel);
ExeModel为显示在Visual Studio的行蒂
"\"C:\\Program Files (x86)\\River Logic\\Enterprise Optimizer 7.4 Developer\\EO74.exe\" \"C:\\PauloXLS\\Constraint Sets_1.cor\""
对我看起来像这是我需要发送到以下方法的字符串:
public int ExecuteCommand(string Command)
{
int ExitCode;
ProcessStartInfo ProcessInfo;
Process Process;
ProcessInfo = new ProcessStartInfo("cmd.exe", "/K " + Command);
ProcessInfo.CreateNoWindow = true;
ProcessInfo.UseShellExecute = true;
Process = Process.Start(ProcessInfo);
Process.WaitForExit();
ExitCode = Process.ExitCode;
Process.Close();
return ExitCode;
}
事情我已经尝试:
- 一次仅传递一个命令(按预期工作),但不是一个选项,因为模型文件将用另一个版本的软件打开。
- 试过修剪
- 试图用@与\”
任何人都可以看到任何明显的错误?谢谢。
为什么使用'cmd.exe/K ...'而不是直接调用程序?这可以让你避免逃离空间的麻烦...... – Heinzi 2011-03-03 15:32:36
是的,使用Process.Start来调用你想要的实际EXE。这将避免任何你可能需要“双重转义”特殊字符的地方出现的问题。 – KeithS 2011-03-03 15:35:42
无论存在某种方法。您必须将命令字符串转义为作为参数传递给cmd.exe,或者您必须解析原始命令以将参数文件名与参数分隔开,以便将它们传递给Process.Start,这需要它们分别传递。如果你将他们分开,那很简单。但是,如果给定一个包含文件名和参数的单个命令字符串,那么将字符串转义并传递给cmd.exe可能不太复杂,而不是试图将文件名与参数分开通过检查引用的名称或空格。 – Triynko 2013-04-18 20:13:38