C#调用exe文件,怎么才能获取exe文件的输出?

@echooffsetBASE=%~dp0cd"%BASE%"setPATH=%BASE%ruby\bin;%BASE%java\bin;%BASE%tools;%BAS... @echo off
set BASE=%~dp0
cd "%BASE%"
set PATH=%BASE%ruby\bin;%BASE%java\bin;%BASE%tools;%BASE%svn\bin;%BASE%nmap;%BASE%postgresql\bin;%PATH%
IF NOT EXIST "%BASE%java" GOTO NO_JAVA
set JAVA_HOME="%BASE%java"
:NO_JAVA

IF EXIST %BASE%config\database.yml GOTO NO_OPTS
set MSFCONSOLE_OPTS=-e production -y "%BASE%config\database.yml"
:NO_OPTS

start console.exe -c "%BASE%tools\console.xml" -t Metasploit
---------------------------------------------------------------------------------------------------
上面是bat文件的内容,启动了一个console.exe的程序,怎么用C#获取它的输出呢?
展开
 我来答
百度网友586e433
推荐于2016-02-24 · TA获得超过3491个赞
知道小有建树答主
回答量:1221
采纳率:0%
帮助的人:1406万
展开全部
把cmd.exe 替换成bat文件名,
"/c dir" 替换成文件名后面的参数
供参考:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo=new System.Diagnostics.ProcessStartInfo("cmd.exe");
p.StartInfo.Arguments = "/c dir";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
string output=p.StandardOutput.ReadToEnd();
MessageBox.Show(output);
更多追问追答
追问
我这样试过了,我的C#程序会没有响应。调用bat文件的进程在打开exe文件后就结束了,这时候是获取不了输出的吧?
追答
"p.WaitForExit();"
这句话会阻塞程序,直到bat文件执行结束.然后读取输出.
因为你的bat启动了一个exe文件,"p.WaitForExit();"会等待exe的退出.
p.StandardOutput.ReadToEnd(); 也会阻塞,直到进程执行完成才读取输出结果.

改成下面试试,加一个textbox显示输入.
延时的时间可以自己修改.
如果要一直读取输出的话,可以不要break,把代码放在backgroudworker里面执行,使用backgroundworker中止while循环.

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo(@"D:\mybat\test2.bat");
//p.StartInfo.Arguments = "/c dir";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
//p.WaitForExit();
string line=string.Empty;
while(true)
{
Application.DoEvents();
System.Threading.Thread.Sleep(100);
line = p.StandardOutput.ReadLine();
if(line!=null&&line.Length>0)
{
textBox1.Text+=line;
}
else
{
break;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式