使用c#和参数运行cmd
本文关键字:运行 cmd 参数 使用 | 更新日期: 2023-09-27 18:05:12
我必须编译一个这样的游戏
爱"C: ' testgame"
。所以我使用这段代码,但似乎参数被误解了。此外,控制台在一秒钟后关闭。但是如果我使用Messagebox。显示我可以看到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();
首先,您发出的"cd"命令可能会失败,因为您没有在参数周围加上引号。(程序文件的env变量将包含空格)
第二,与其直接写入stdin,不如考虑使用"/c"开关来指示cmd.exe直接执行指定的命令。可以用'&&'分隔。
试着简化一下:
var process = Process.Start(
new ProcessStartInfo(@"C:'Program Files (x86)'LOVE'love.exe", @"C:'game") {
WorkingDirectory = @"C:'Program Files (x86)'LOVE" });
为什么你不能用正确的参数启动cmd来启动你的进程?
例如cmd /C love "c:'game"
完成后关闭或cmd /K love "c:'game
完成后保持打开?