用vbs文件执行bat文件 怎么判断bat文件是否执行完成
我要用c#做一个程序调用bat文件,但是调用bat时会显示出dos黑框,于是我用C#调用vbs脚本然后再用vbs脚本调用bat文件这样就没有了黑框,但是我怎么判断这个ba...
我要用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;
}
这个是在网上找的,很可以的,不会弹出黑框的,贴出来,大家看下 展开
我的代码:
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;
}
这个是在网上找的,很可以的,不会弹出黑框的,贴出来,大家看下 展开
3个回答
展开全部
在c#里面判断我不会,在vbs里面可以:
假设你的批处理文件名字是123.bat,下面这个程序可以检测他是否已经运行完毕。
batname="123.bat"
if test(batname)=0 then
msgbox "执行完毕"
Else
msgbox "还没执行完"
end if
function test(byval batname)
test=0
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_process Where Name='cmd.exe'")
For Each objService In colServices
data=objservice.commandline
msgbox data
d=StrReverse(mid(StrReverse(right(data,instr(StrReverse(data),"\")-1)),4))
msgbox d
if d=batname then test=1
Next
end function
假设你的批处理文件名字是123.bat,下面这个程序可以检测他是否已经运行完毕。
batname="123.bat"
if test(batname)=0 then
msgbox "执行完毕"
Else
msgbox "还没执行完"
end if
function test(byval batname)
test=0
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_process Where Name='cmd.exe'")
For Each objService In colServices
data=objservice.commandline
msgbox data
d=StrReverse(mid(StrReverse(right(data,instr(StrReverse(data),"\")-1)),4))
msgbox d
if d=batname then test=1
Next
end function
展开全部
调用时用start /w即可。
start /w 表示等待某个程序运行完毕,也就是窗口关闭后才结束,用这个命令调用BAT,即等待BAT执行完成才返回继续运行。
start /w 表示等待某个程序运行完毕,也就是窗口关闭后才结束,用这个命令调用BAT,即等待BAT执行完成才返回继续运行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VBS脚本如下
Set oWsh = CreateObject("WScript.Shell")
oWsh.Run "xxxxx.bat",0, True
只有在bat执行完毕以后第二行语句才会执行结束
Set oWsh = CreateObject("WScript.Shell")
oWsh.Run "xxxxx.bat",0, True
只有在bat执行完毕以后第二行语句才会执行结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询