VBkill代码将bat批处理文件删除后,之前bat进行的动作也撤销了,为什么(难说清,见详情)

具体代码Subkill_1()Open"d:\123\2323233.txt"ForOutputAs#2Print#2,"mdE:\123\444666.txt"Clos... 具体代码Sub kill_1()Open "d:\123\2323233.txt" For Output As #2 Print #2, "md E:\123\444666.txt" Close #2Name "d:\123\2323233.txt" As "d:\123\2323233.bat"Shell "d:\123\2323233.bat"Kill "d:\123\2323233.bat"End Sub请看详情图1(代码执行前)和图2(代码执行后),该文件夹内依然是空的.另外 见详情图3(我将Kill "d:\123\2323233.bat"语句删除后,执行代码,一切正常)是不是 VB kill语法我用错了,请大神解答一二感激不尽
Sub kill_1()
具体代码
Open "d:\123\2323233.txt" For Output As #2
Print #2, "md E:\123\444666.txt"
Close #2
Name "d:\123\2323233.txt" As "d:\123\2323233.bat"
Shell "d:\123\2323233.bat"
End Sub
请看详情图1(代码执行前)和图2(代码执行后),该文件夹内依然是空的.
另外 见详情图3(我将Kill "d:\123\2323233.bat"语句删除后,执行代码,一切正常)
是不是 VB kill语法我用错了,请大神解答一二感激不尽
图1:

图2:

图3:
展开
 我来答
网海1书生
科技发烧友

2017-12-14 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26225

向TA提问 私信TA
展开全部

VB的Shell命令是异步执行的,所谓异步执行,就是说Shell运行后,它是不会等引号里面的bat文件执行完毕的,而是立即运行后面的其他命令(即kill),换句话说,当bat文件刚开始执行(甚至可能还没有开始执行)时,就被kill命令删除了,这样它里面的批处理命令就不会完整执行甚至是完全没有执行。

为避免这种情况,首先建议尽量不要使用shell来运行外部程序(尤其是DOS程序如批处理),尽可能使用VB本身的方法来解决问题(实在不行也要优先考虑API函数),确实没办法了才使用Shell;其次,如果一定要在VB中运行bat批处理,可考虑使用同步运行的方式,这个有多种方法自己网上搜一下;还有,可考虑在批处理的最后删除自身(批处理类似于脚本程序,是可以删除自身的),而不要在VB中用kill来删除。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式