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

[复制链接]
查看11 | 回复3 | 2010-8-4 10:56:06 | 显示全部楼层 |阅读模式
我要用c#做一个程序 调用 bat 文件,但是调用bat时会显示出dos黑框,于是我用C#调用vbs脚本然后再用vbs脚本调用bat文件 这样就没有了黑框,但是我怎么判断 这个 bat 文件什么时候 会执行完毕啊,急求答案,谢谢
我的代码:
Process p = System.Diagnostics.Process.Start("wscript", "\""+url+"\"");
有没有其他的能让bat文件隐藏运行的方法啊,VBS真不好用,我用的时候,任务管理器里老是不断的增加 WScript.exe 这个进程 一会儿 机器就卡死 了
晕,怎么让他执行完了自动 的关闭 Wscript.exe 进程啊
/// 执行Bat文件并且不弹出 那个 贱的该死的---dos黑框

public static string GetCMDOutString(string path)

{

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();

psi.FileName = path ;

psi.UseShellExecute = false;

psi.CreateNoWindow = true;

psi.RedirectStandardOutput = true;

String s = "";

System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);

while (p.WaitForExit(0) == false)

{

s += p.StandardOutput.ReadLine() + "\r\n";

}

return s;

}
这个是在网上找的,很可以的,不会弹出黑框的,贴出来,大家看下

回复

使用道具 举报

千问 | 2010-8-4 10:56:06 | 显示全部楼层
在c#里面判断我不会,在vbs里面可以:假设你的批处理文件名字是123.bat,下面这个程序可以检测他是否已经运行完毕。batname="123.bat"if test(batname)=0 then msgbox "执行完毕"Elsemsgbox "还没执行完"end iffunction test(byval batname)test=0Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_process Where
回复

使用道具 举报

千问 | 2010-8-4 10:56:06 | 显示全部楼层
调用时用start /w即可。start /w 表示等待某个程序运行完毕,也就是窗口关闭后才结束,用这个命令调用BAT,即等待BAT执行完成才返回继续运行。
回复

使用道具 举报

千问 | 2010-8-4 10:56:06 | 显示全部楼层
VBS脚本如下Set oWsh = CreateObject("WScript.Shell")oWsh.Run "xxxxx.bat",0, True只有在bat执行完毕以后第二行语句才会执行结束
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行