将参数传递给cmd.exe

我试图从我的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); 

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

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

 proc.Arguments = "/c ping 10.2.2.125"; 

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

您可以使用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; } 
 cmd /C 

要么

 cmd /K 

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

 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(); } 

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

不要忘记使用/c

要直接调用ping命令,请按照您的问题执行操作,但将cmd.exe替换为ping.exe

 ProcessStartInfo proc = new ProcessStartInfo(); proc.FileName = @"C:\windows\system32\ping.exe"; proc.Arguments = @"10.2.2.125"; Process.Start(proc);