将参数传递给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);