将参数传递给cmd.exe

19 .net c#

我试图从我的C#程序ping本地计算机.为此,我使用以下代码.

System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = @"C:\windows\system32\cmd.exe";
proc.Arguments = @"""ping 10.2.2.125""";
System.Diagnostics.Process.Start(proc);
Run Code Online (Sandbox Code Playgroud)

这将打开一个命令行窗口,但不会调用ping.是什么原因?

Jon*_*eet 38

你需要包含"/ c"参数来告诉cmd.exe你的意思:

proc.Arguments = "/c ping 10.2.2.125";
Run Code Online (Sandbox Code Playgroud)

(你当然可以直接调用ping.exe.有时这是合适的,以及更容易调用的时间cmd.)


Dea*_*hRs 7

public void ExecuteCommand(String command)
{
   Process p = new Process();
   ProcessStartInfo startInfo = new ProcessStartInfo();
   startInfo.FileName = "cmd.exe";
   startInfo.Arguments = command;
   p.StartInfo = startInfo;
   p.Start();
}
Run Code Online (Sandbox Code Playgroud)

用法: ExecuteCommand(@"/c ping google.com -t");

别忘了使用 /c


Ala*_*ier 6

cmd /C 
Run Code Online (Sandbox Code Playgroud)

要么

cmd /K
Run Code Online (Sandbox Code Playgroud)

可能/ C因为/ K没有立即终止


JYe*_*ton 6

你可以使用这个System.Net.NetworkInformation.Ping课程.

    public static int GetPing(string ip, int timeout)
    {
        int p = -1;
        using (Ping ping = new Ping())
        {
                PingReply reply = ping.Send(_ip, timeout);
                if (reply != null)
                    if (reply.Status == IPStatus.Success)
                        p = Convert.ToInt32(reply.RoundtripTime);
        }
        return p;
    }
Run Code Online (Sandbox Code Playgroud)