.NET操作命令行
如果需要操作命令行的话(比如ping一个网页啊等等),基本上都是需要用到Process类的
下面是之前回答CSDN上朋友的一个例子:
Process类存在与System.Diagnostics命名空间下故需应用这个空间
using System.Diagnostics;
先定义一个ProcessStartInof对象
ProcessStartInfo _processInfo = new ProcessStartInfo();
//设置执行的文件类型
_processInfo.FileName="cmd.exe";//与"开始"------"运行"------"cmd"----回车,一样的效果;
_processInfo.CreateNoWindow = true//设置是否需要把Dos的界面显示出来,True为不显示
_processInfo.UseShellExcute =false//设置是否用操作系统的外壳程序启动进程
_processInfo.RedirectStanderInput =true//设置是否启动标准输入---用于输入执行代码
_processInfo.RedirectStanderOutput=true..设置是否启动标准输出--用于输出结果
_processInfo.Arguments = "ping www.sina.com"//设置执行代码
//实例一个Process对象
Process _process = new Process();
//执行
_process.Start(_processInfo);
如果没有设置_processInfo.Argunments的话,也可以在这边来输入执行代码
_process.StandarInput.WriteLine("ping www.sina.com.cn");//效果是一样的
这样的话就开始ping 新浪了
如果想得到ping的结果呢
StreamReader _reader =_process.StandarOutput;
while(_reader.Read())
{
//得到ping的结果l
}
也可以一次读完所有ping的结果
string _pingResult = _reader.ReadToEnd();
//判断是否能ping的通
if(_pingResult.indexof("(0%lose)")!=-1)
{
MessageBox.Show("ping的通");
}
else
{
MessagBox.Show("无法连接到指定的服务器");
}
//关闭
_process.WaitForExit();
_process.Close();
总结:不单单是ping可以这样做,所有Dos的操作命令都可以这样做,只要改变Argunments属性或者StandarInput.WriteLine()的值就可以了
下面是之前回答CSDN上朋友的一个例子:
Process类存在与System.Diagnostics命名空间下故需应用这个空间
using System.Diagnostics;
先定义一个ProcessStartInof对象
ProcessStartInfo _processInfo = new ProcessStartInfo();
//设置执行的文件类型
_processInfo.FileName="cmd.exe";//与"开始"------"运行"------"cmd"----回车,一样的效果;
_processInfo.CreateNoWindow = true//设置是否需要把Dos的界面显示出来,True为不显示
_processInfo.UseShellExcute =false//设置是否用操作系统的外壳程序启动进程
_processInfo.RedirectStanderInput =true//设置是否启动标准输入---用于输入执行代码
_processInfo.RedirectStanderOutput=true..设置是否启动标准输出--用于输出结果
_processInfo.Arguments = "ping www.sina.com"//设置执行代码
//实例一个Process对象
Process _process = new Process();
//执行
_process.Start(_processInfo);
如果没有设置_processInfo.Argunments的话,也可以在这边来输入执行代码
_process.StandarInput.WriteLine("ping www.sina.com.cn");//效果是一样的
这样的话就开始ping 新浪了
如果想得到ping的结果呢
StreamReader _reader =_process.StandarOutput;
while(_reader.Read())
{
//得到ping的结果l
}
也可以一次读完所有ping的结果
string _pingResult = _reader.ReadToEnd();
//判断是否能ping的通
if(_pingResult.indexof("(0%lose)")!=-1)
{
MessageBox.Show("ping的通");
}
else
{
MessagBox.Show("无法连接到指定的服务器");
}
//关闭
_process.WaitForExit();
_process.Close();
总结:不单单是ping可以这样做,所有Dos的操作命令都可以这样做,只要改变Argunments属性或者StandarInput.WriteLine()的值就可以了