从 C# 运行 CMD 命令

问题描述 投票:0回答:3

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

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

如何:在 C# 中执行命令行,获取 STD OUT 结果

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

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

msg /server:192.168.2.1 console "foo"

ping 192.168.2.1

如果有则返回结果。

我怎样才能做到这一点?

c# cmd
3个回答
0
投票

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

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

0
投票

执行此操作的唯一正确方法是使用 Process.Start。这在这个问题中得到了充分的证明,它本身就是其他两个问题的重复。

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


-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。

感谢您的贡献。

© www.soinside.com 2019 - 2024. All rights reserved.