从C#运行CMD命令

时间:2014-11-13 11:27:28

标签: c# cmd

首先,我搜索了很多,以避免提出重复的问题。如果有,我会立即删除这个问题。

网络上的所有解决方案都建议使用像这样的Process.StartInfo

How To: Execute command line in C#, get STD OUT results

我不想运行批处理文件或.exe。

我只想在cmd上运行一些命令,如

msg /server:192.168.2.1 console "foo"ping 192.168.2.1

并返回结果(如果有)。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

这些命令仍然是exe文件,你只需要知道它们在哪里。例如:

c:\windows\system32\msg.exe /server:192.168.2.1 console "foo"
c:\windows\system32\ping.exe 192.168.2.1

答案 1 :(得分:0)

执行此操作的唯一正确方法是使用Process.Start。这在this question中得到了充分的证明,{{3}}本身就是另外两个的重复。

然而,正如DavidG所说,命令都是exe文件,你可以这样运行它们。

答案 2 :(得分:-1)

显然,我找到了答案

while (true)
            {
                Console.WriteLine("Komut giriniz.");
                string komut = Console.ReadLine();
                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 = "/C" + komut;
                startInfo.RedirectStandardOutput = true;
                startInfo.UseShellExecute = false;
                process.StartInfo = startInfo;
                Console.WriteLine(process.Start());
                string line = "";
                while (!process.StandardOutput.EndOfStream)
                {
                    line = line + System.Environment.NewLine + process.StandardOutput.ReadLine();
                    // do something with line
                }
                Console.WriteLine(line);
                Console.ReadLine();
            }

似乎可以运行包含命令的参数的cmd.exe。

感谢您的贡献。