|
2精币
刚弄易语言没几天,产生巨量问题,急切地就过来求教各位高手了!~~先谢谢了
我做的一个测试程序,从服务器下载的文件就绪,程序在当前文件夹下产生一个BAT批处理文件,内容如下:
--------------------------------------------------
@echo off
Taskkill /f /im 示例程序.exe
Del 示例程序.exe
ren 示例程序.exe.tmp 示例程序.exe
start 示例程序.exe
Del %0
Exit
-----------------------------------------------------
经测试,进程可以被结束,但是,删除程序却不能完成,就是上面代码第三行不能正常执行!~~~~
后来,我发现,延时几秒,就可以进行删除了,这是为什么呢?
-----------------------------------------------------
@echo off
Taskkill /f /im 示例程序.exe
ping 127.0.0.1 -n 7>nul
Del 示例程序.exe
ren 示例程序.exe.tmp 示例程序.exe
start 示例程序.exe
Del %0
Exit
------------------------------------------------------
究竟是咋回事呢?有什么办法解决啊,各位高手!?
|
最佳答案
查看完整内容
因为BAT处理的速度快一点。。也就是系统结束每个进程都要有3秒左右的清除内存时间,而 Taskkill 进程时,只要操作成功与否都进行下一步 DEL,也就是没有等到系统清除这个程序的进程完就 进行了 DEL,这时DEL就不能删除程序了,所以要Ping 2~3 秒,让程序的内存全部清除在 Del ,才用有做用。。。有的程序占用内存大时,Ping 2~3 秒也是没有用的,这时就用 if exist 来判断文件是否存在,如果存在就用 goto 命令循环到删除为止。
...
|