首页 新闻 会员 周边 捐助

用vbs文件执行bat文件 怎么判断bat文件是否执行完成

0
悬赏园豆:10 [已解决问题] 解决于 2010-08-04 19:13

我要用c#做一个程序 调用 bat 文件,但是调用bat时会显示出dos黑框,于是我用C#调用vbs脚本  然后再用vbs脚本调用bat文件 这样就没有了黑框,但是我怎么判断 这个 bat 文件什么时候 会执行完毕啊,急求答案,谢谢
我的代码:
Process p = System.Diagnostics.Process.Start("wscript", "\""+url+"\"");

问题补充: 这个能不能用线程来控制啊,比如说 获得线程的状态,如果执行完毕就继续执行下个 bat 文件 不过我是要把它的状态显示到 winform界面 里去的,大家来看看啊··············
邢帅杰的主页 邢帅杰 | 初学一级 | 园豆:177
提问于:2010-08-04 10:44
< >
分享
最佳答案
0

p.WaitForExit();

收获园豆:10
Launcher | 高人七级 |园豆:45050 | 2010-08-04 10:52
我写了啊,用这个的话程序就卡死了,不知道为什么,有解决办法吗,谢谢
邢帅杰 | 园豆:177 (初学一级) | 2010-08-04 10:55
Process p = System.Diagnostics.Process.Start("wscript", "\""+url+"\""); p.WaitForExit(); 因为是阻塞主线程,你可以把上面的代码放到一个新线程中,新线程执行完后再更新UI.
Launcher | 园豆:45050 (高人七级) | 2010-08-04 11:35
你用winform的话,可以把方法放到 BackgroundWorker 这个组件中去执行,比手动创建线程简单。
Launcher | 园豆:45050 (高人七级) | 2010-08-04 11:36
@Galactica:哥,详细点儿啊,快说说,怎么改啊,分少了我再给加,只要能解决问题
邢帅杰 | 园豆:177 (初学一级) | 2010-08-04 11:51
在设计器中打开你的winform界面,就是你要显示结果的那个窗体,然后从"工具箱">>"组件"中把BackgroundWorker拖到你的窗体上,然后双击窗体下方的backgroundWorker1,然后在自动生成的事件响应代码中把你的执行vbs的代码放进去.然后,你可以在你的窗体中通过调用 this.backgroundWorker1.RunWorkerAsync 方法来启动执行vbs的代码.
Launcher | 园豆:45050 (高人七级) | 2010-08-04 13:32
好了,不过他这个好像只能执行一个,难道我要执行几十个的时候要拖这么多
邢帅杰 | 园豆:177 (初学一级) | 2010-08-04 14:26
不用啊!RunWorkerAsync(object argument) ,可以传入一个参数,然后在private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)中,e.Argument能够获得这个参数,你可以把你要执行的多个脚本的文家名作为参数传入进去.
Launcher | 园豆:45050 (高人七级) | 2010-08-04 15:15
其他回答(1)
0

 System.Diagnostics.Process process = new System.Diagnostics.Process();
 process.StartInfo.FileName = "iisweb.vbs";
 process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
 process.Start();
 process.WaitForExit();
 process.Close();

必须要加上  process.Close(); ,你要读下个文件的话, 再运行一遍上边的语句。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-04 11:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册