关于删除程序本身
关于删除程序本身Run(@ComSpec & ' /c del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE)
这个BAT为什么能删除.au3的文件把.au3的文件编译成.exe就不能运行呢? 就是a.au3可以删除 a.exe就不行呢 Run(@ComSpec & ' /c ping 127.0.0.1 -n 3&del /q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE) ;删除自身
Exit 这个方法有时候编译了会存在无法自删除的问题。不知道为何。。 这个方法有时候编译了会存在无法自删除的问题。不知道为何。。
tryhi 发表于 2011-3-29 08:47 http://www.autoitx.com/images/common/back.gif
我编译了 还是不能删除.exe
.au3倒是能删除 为什么呢 我编译了 还是不能删除.exe
.au3倒是能删除 为什么呢
iori2882 发表于 2011-3-29 11:21 http://www.autoitx.com/images/common/back.gif
嗯,这个方法是学虫子樱桃的,我试了可以啊,要不你时间改长一点Run(@ComSpec & ' /c ping 127.0.0.1 -n 5&del /q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE) ;删除自身
Exit 删除不掉的原因是程序正在执行,可以尝试给cmd加上点延迟
不要使用runwait exit (run())呢? exit (run())呢?
netegg 发表于 2011-3-29 13:26 http://www.autoitx.com/images/common/back.gif
语法错误~~~~ #include <Array.au3>
$1234=InputBox(0,0)
If $1234=1 Then
RunWait(@ComSpec & ' /c del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE)
EndIf
Dim $a =
_ArrayDisplay($a)
For $i = 1 To $a
MsgBox(0,0,"下标为" & $i & "内容是" & $a[$i])
Next好像不是延迟的事情 上面代码 输入1 就删除程序自身 还是不行 和原来一样 能删除.au3 不能删除.exe
RunWait(@ComSpec & ' /c del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE)删除不成功就在删除
用延迟的那个也不行 麻烦2楼在继续测试下 如果你的还行 那肯定我出问题了 exit (run(@ComSpec & ' /c del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE))
语法错误? 不知道能不能直接在进程里面删除呢 本帖最后由 gzh888666 于 2011-3-29 21:53 编辑
一般删除自身不要只删除一次,Run(@ComSpec & ' /c del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"||del/f/q "' & @ScriptFullPath & '"', @ScriptDir, @SW_HIDE)删除一次不行就再执行删除,直到成功为止!
删除后必须退出脚本,就是加上exit
这样就不会继续执行下面的语句了! 本帖最后由 xxoojoeooxx 于 2011-3-29 22:47 编辑
回覆 10# iori2882
au3能删除是因为 那个档案没有因读取而锁定
exe要确保程序已经结束 才能被删除
以下在任何時間都可執行
也就是說可以插在任何地方
方案一
执行删除直到成功
Run(@ComSpec & ' /c for /l %a in (0,0,1) do (del /f /q "'&@ScriptFullPath&'"&if not exist "'&@ScriptFullPath&'" (exit))', @ScriptDir, @SW_HIDE)
方案二
执行删除直到成功附加延迟
Run(@ComSpec & ' /c for /l %a in (0,0,1) do (del /f /q "'&@ScriptFullPath&'"&if not exist "'&@ScriptFullPath&'" (exit) else (ping -n 2 127.0.0.1>nul))', @ScriptDir, @SW_HIDE)
方案三
强制关闭程序并删除
Run(@ComSpec & ' /c taskkill /f /PID '& @AutoItPID &'&del /f /q "'&@ScriptFullPath&'"', @ScriptDir, @SW_HIDE) 这都说的什么和什么呀,exit可以本身就可以带操作的,如果在脚本运行的过程内部无论怎么加都删不了自身,只有在退出的时候附加代码
页:
[1]
2