string appPath = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));
Process p = new Process();
p.StartInfo = new ProcessStartInfo("cmd.exe", @"/c opencvproject.exe " + @appPath + @"\\bin\\Debug\\center\\centerilluminate.jpg");
p.Start();
我在我的另一台计算机上尝试了这个并且它可以工作,但是当我在我的新计算机上尝试它时,这不起作用。谁知道如何解决这个问题?我正在使用的程序是c#
,我正在调用cmd来调用c++
程序,这是opencvproject.exe
我仍然有多个实例使用cmd来触发其他c++
程序和python脚本运行,而且这些脚本也不起作用。我不确定我做错了什么..
答案 0 :(得分:2)
保持双引号之间的路径。
p.StartInfo = new ProcessStartInfo("cmd.exe", "/c opencvproject.exe \"" + appPath + "\\bin\\Debug\\center\\centerilluminate.jpg\"");
<强>解释强>
由反斜杠()后跟字母或数字组合组成的字符组合称为&#34;转义序列。&#34;
http://msdn.microsoft.com/ja-jp/library/h21280bw.aspx
@使转义序列无效,所以..
var s1 = @"\\bin\\Debug\\"; // This contains wrong path \\bin\\Debug\\
var s2 = "\\bin\\Debug\\"; // This contains right path \bin\Debug\
需要使用转义序列来保持双引号之间的双引号。
var s3 = "\"\\bin\\Debug\\\""; // This contains "\bin\Debug\"
var s4 = @"\"\\bin\\Debug\\\""; // compile error
答案 1 :(得分:0)
@字符会自动转义后面字符串中的字符,所以你不应该对你的路径加倍反斜杠。
例如,您所拥有的地方:
@"\\bin\\debug\\.."
它应该是:
@"\bin\debug\..."
或:
"\\bin\\debug\\.."
(没有@)
此外,如果您的apppath
包含空格,则应使用“字符