我所要做的就是發送一個命令,用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