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: 展开
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个回答
展开全部
VB的Shell命令是异步执行的,所谓异步执行,就是说Shell运行后,它是不会等引号里面的bat文件执行完毕的,而是立即运行后面的其他命令(即kill),换句话说,当bat文件刚开始执行(甚至可能还没有开始执行)时,就被kill命令删除了,这样它里面的批处理命令就不会完整执行甚至是完全没有执行。
为避免这种情况,首先建议尽量不要使用shell来运行外部程序(尤其是DOS程序如批处理),尽可能使用VB本身的方法来解决问题(实在不行也要优先考虑API函数),确实没办法了才使用Shell;其次,如果一定要在VB中运行bat批处理,可考虑使用同步运行的方式,这个有多种方法自己网上搜一下;还有,可考虑在批处理的最后删除自身(批处理类似于脚本程序,是可以删除自身的),而不要在VB中用kill来删除。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询