如何创建在另一个窗口中打开“ cmd.exe”的C#应用​​程序?

时间:2018-10-12 18:18:54

标签: c# cmd process subprocess processstartinfo

我想做什么

我想创建一个简单的C#应用​​程序,该应用程序创建一个运行Process的{​​{1}}对象(该应用程序的子进程),并在该Shell中执行命令cmd.exe(或我在编译应用程序之前指定的任何任意字符串)。 C#应用程序在构建和运行时会创建并保持外壳处于这种状态:

middleware

尝试

我已经搜索了stackoverflow和MSDN的示例,但是很难找到为echo "Hello World!"Process设置的正确选项。我特别尝试过:

ProcessStartInfo

,但是第二个cmd窗口(对于子进程)永远不会出现(如果我设置了using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { /* System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "echo helloworld!"; string strCmdText; process.StartInfo = startInfo; process.Start(); */ var proc = new Process { StartInfo = new ProcessStartInfo { FileName = @"cmd.exe", // iexplorer.exe opened up ie! Arguments = "", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = false, WorkingDirectory = @"C:\Users\mtran\Desktop\ConsoleApp1", WindowStyle = ProcessWindowStyle.Normal } }; proc.Start(); } } } ),或者子进程的输出被写入父进程的cm​​d窗口。

1 个答案:

答案 0 :(得分:1)

尝试一下:

Process.Start("cmd.exe", "/k ECHO hello Juan!");

它将启动命令窗口,执行ECHO语句并保持窗口打开。

如果需要其他配置,可以随时使用ProcessStartInfo实例作为参数。

如果在命令提示符下运行cmd /?,则可以看到有关开关的其他信息:

  

/ C执行由字符串指定的命令,然后   终止

     

/ K执行由字符串指定的命令,但仍保留