c#调用cmd窗口执行多条命令时为何cmd不显示?

代码如下:System.Diagnostics.Processprocess=newProcess();//创建进程对象process.StartInfo.FileNam... 代码如下:
System.Diagnostics.Process process = new Process(); //创建进程对象
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/kipconfig";
process.StartInfo.UseShellExecute = false; //不使用系统外壳程序启动
process.StartInfo.RedirectStandardInput = true; //重定向输入(一定是true)
process.StartInfo.RedirectStandardOutput = true; //重定向输出
process.StartInfo.CreateNoWindow = false; //不创建窗口
process.Start();
process.StandardInput.WriteLine("ping 192.168.1.1");
process.Close();
cmd窗口是打开的,但是就是不显示内容。也不知道有没有执行成功。
高手请指点一二。
展开
 我来答
FabKiller
2013-10-29 · TA获得超过586个赞
知道小有建树答主
回答量:676
采纳率:0%
帮助的人:480万
展开全部

同学你好!

    你的问题在于:你漏了关键一句:

process.StandardInput.Close();

这样导致流一直处于等待输入完毕状态,所以,cmd窗口没有数据显示。

我改下ping后,效果图如下:

追问
能让结果不显示在winform程序中,而是直接显示在cmd窗口里呢?
tobacco2006
2014-07-23 · 超过14用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:14万
展开全部
因为你重定向了输入输出,所以cmd窗口不能显示出执行结果。

如果想在cmd窗口显示
process.StartInfo.UseShellExecute = true;
process.StartInfo.RedirectStandardInput = false;
process.StartInfo.RedirectStandardOutput = false;

然后以下面的方式传参数
process.StartInfo.Arguments = "/k command" 单个命令


process.StartInfo.Arguments = "/k command.bat" bat中可以写多个命令

启动
process.start();

搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翲燚
2017-08-05 · 知道合伙人软件行家
翲燚
知道合伙人软件行家
采纳数:436 获赞数:3030

向TA提问 私信TA
展开全部
process.StandardInput.WriteLine("ping 192.168.1.1\n");
改成这个试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式