VB 执行一个bat再Kill问题

想法就是产生一个bat然后再执行,最后删除这个临时产生的文件那么Shell"C:\test.bat",vbHideKill"C:\test.bat"如果说bat执行的内容... 想法就是产生一个bat然后再执行,最后删除这个临时产生的文件

那么
Shell "C:\test.bat", vbHide
Kill "C:\test.bat"
如果说 bat执行的内容少,肯定一下就结束了,这时把kill就没事了
那么如果说bat执行的内容多的话,
这个程序是等shell里的bat执行完才kill,还是会马上就kill
展开
 我来答
网海1书生
科技发烧友

推荐于2016-04-10 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
shell是异步运行的,就是说它运行后并不会等里面的bat执行完毕,而是立刻就继续执行下面的其他语句,也就是说bat会立刻被kill的。
bat属于类脚本程序,它在运行期间其他软件是可以把它删除的(而EXE文件则是不行的),多数情况下不会出错,因为它在启动的时候就已经被整体调入内存了,此后它就按照内存中的副本来解析运行了,硬盘中的原文件是否存在就关系不大了,但有时候也会出错的,尤其是内容比较多的时候。
解决办法有两种:
一是要等bat完全执行完毕才执行kill。这又有多种方法实现,比如通过API函数来检测shell的进程ID,如果该ID存在就说明bat还没有运行完毕,这样通过循环检测直到ID为0才执行kill。还有一种比较巧妙的方法是不用shell,而是改用Wscript的run,因为它可以实现同步运行,比如:
CreateObject("Wscript.Shell").Run "C:\test.bat", 0, True
Kill "C:\test.bat"
二是不在VB中删除bat文件,而是在bat文件中删除自身,比如在bat的最后添加一行:
del %0%

或者
del "C:\test.bat"
请注意这个一定要放在最后一行!
当前不能联网
2014-10-12 · TA获得超过1563个赞
知道大有可为答主
回答量:2626
采纳率:66%
帮助的人:658万
展开全部
会马上就执行Kill,然后报错。用DO EVENTS控制执行进度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
儒雅的阿振
2014-10-12 · 超过13用户采纳过TA的回答
知道答主
回答量:23
采纳率:0%
帮助的人:12.3万
展开全部
执行完再KILL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式