使用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();

使用c#和参数运行cmd

首先,您发出的"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完成后保持打开?