我必须编译这样的游戏
爱“C:\ testgame”
在cmd中。所以我使用这个代码,但似乎参数被错误解释。此外,控制台在一秒钟后关闭。但是,如果我使用Messagebox.Show我可以看到cmd中的命令与我手动使用的相同(这有效)
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput =
true;
cmd.StartInfo.RedirectStandardOutput =
true;
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.Write(@"cd %ProgramFiles(x86)%\LOVE\");
MessageBox.Show("love \""+fldBrowDiag.SelectedPath.ToString()+@"\"+lsb_projects.SelectedItem.ToString()+"\"");
cmd.StandardInput.Close();
cmd.Close();
答案 0 :(得分:4)
首先,您发出的“cd”命令可能会失败,因为参数周围没有引号。 (程序文件env变量将包含空格。)
其次,不是直接写入stdin,而是考虑使用“/ c”开关来指示cmd.exe直接执行指定的命令。您可以将命令与“&&”分开。
答案 1 :(得分:2)
试着这样简化:
var process = Process.Start(
new ProcessStartInfo(@"C:\Program Files (x86)\LOVE\love.exe", @"C:\game") {
WorkingDirectory = @"C:\Program Files (x86)\LOVE" });
答案 2 :(得分:0)
为什么不能用启动过程的正确参数启动cmd?
例如cmd /C love "c:\game"
完成后关闭或cmd /K love "c:\game
完成后保持打开状态?