用Ping命令作示例,说明C#下执行命令行或DOS内部命令的一种方法,并获取相应的结果。执行时可以让这些程序的执行过程不显示出来,调用外部程序就可以分析执行结果。
using System; // 要用使用Process类来创建独立的进程,导入 using System.Diagnostics;
namespace Cmd {
class CmdConsole {
[STAThread] static void Main(string[] args) { Console.Write("Please Input IP Address: "); string ip = Console.ReadLine(); string strRst = CmdPing(ip); Console.WriteLine(strRst); Console.ReadLine(); }
private static string CmdPing(string strIp) { // 实例一个Process类,启动一个独立进程 Process p = new Process();
// 设定程序名 p.StartInfo.FileName = "cmd.exe"; // 关闭Shell的使用 p.StartInfo.UseShellExecute = false; // 重定向标准输入 p.StartInfo.RedirectStandardInput = true; // 重定向标准输出 p.StartInfo.RedirectStandardOutput = true; //重定向错误输出 p.StartInfo.RedirectStandardError = true; // 设置不显示窗口 p.StartInfo.CreateNoWindow = true;
// 启动进程 string pingrst;
p.Start();
p.StandardInput.WriteLine("ping -n 1 " + strIp); p.StandardInput.WriteLine("exit");
// 从输出流获取命令执行结果 string strRst = p.StandardOutput.ReadToEnd();
if (strRst.IndexOf("( 0% loss )") != -1) pingrst = "连接"; else if (strRst.IndexOf("Destination host unreachable.") != -1) pingrst = "无法到达目的主机"; else if (strRst.IndexOf("Request timed out.") != -1) pingrst = "超时"; else if (strRst.IndexOf("Unknown host") != -1) pingrst = "无法解析主机"; else pingrst = strRst; // if end
p.Close();
return pingrst; } } }
|