使用C#和参数运行cmd

时间:2011-08-11 22:15:57

标签: c# windows batch-file

我必须编译这样的游戏

爱“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();

3 个答案:

答案 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完成后保持打开状态?