qq271859852 发表于 2012-7-7 19:36:53

[已解决]如何让程序运行完后自行删除?

本帖最后由 qq271859852 于 2012-7-7 22:17 编辑

如题。
我的想法是使用OnAutoItExiRegister函数,使程序运行完后自行删除。但是不成功。请问是怎么一回事?
代码如下OnAutoItExitRegister("MyTestFunc")
Func MyTestFunc()
        FileDelete(@ScriptFullPath)
EndFunc   ;==>MyTestFunc

xiaowo 发表于 2012-7-7 19:43:39

这个是退出时执行,执行本身需要进程还在,当然不会成功

ooxxgod 发表于 2012-7-7 20:10:32

Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)

MicroBlue 发表于 2012-7-7 20:34:50

楼上正解!

happytc 发表于 2012-7-7 20:40:56

回复 1# qq271859852


    告诉一个au3魔术:在SciTE编辑器里面输入‘selfdelete’后再按ctrl+b
看看出来了什么……

xiaowo 发表于 2012-7-7 21:29:13

回复qq271859852


    告诉一个au3魔术:在SciTE编辑器里面输入‘selfdelete’后再按ctrl+b
看看出 ...
happytc 发表于 2012-7-7 20:40 http://www.autoitx.com/images/common/back.gif

学到一招,哈哈

qq271859852 发表于 2012-7-7 21:59:45

回复 3# ooxxgod


    谢谢!

xms77 发表于 2012-7-7 22:13:09

Func _SelfDelete($iDelay = 0)
        Local $sCmdFile
        FileDelete(@TempDir & "scratch.bat")
        $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
                        & ':loop' & @CRLF _
                        & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
                        & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
                        & 'del ' & @TempDir & 'scratch.bat'
        FileWrite(@TempDir & "scratch.bat", $sCmdFile)
        Run(@TempDir & "scratch.bat", @TempDir, @SW_HIDE)
EndFunc回复 5# happytc
没想到会自动生成一个这样的函数,真的很神奇,你是怎么发现的,还是说帮助文件里有?

user3000 发表于 2012-7-8 08:08:35

回复 8# xms77


虫子发过一个帖的.

"au3自删除的归纳"
http://www.autoitx.com/forum.php?mod=viewthread&tid=28602&highlight=

happytc 发表于 2012-7-8 20:35:50

回复 8# xms77

回复 9# user3000


    我是官方论坛上看到的,倒没有发现虫子居然总结了这么个帖子,不错!

au3x 发表于 2012-12-3 10:31:51

回复 3# ooxxgod


    为什么要ping 127.0.0.1 -n 3

au3x 发表于 2012-12-3 10:34:43

回复 6# xiaowo


    高

fjvip 发表于 2013-1-7 13:36:06

Func _SelfDelete($iDelay = 0)
      Local $sCmdFile
      FileDelete(@TempDir & "scratch.bat")
      $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
                        & ':loop' & @CRLF _
                        & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
                        & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
                        & 'del ' & @TempDir & 'scratch.bat'
      FileWrite(@TempDir & "scratch.bat", $sCmdFile)
      Run(@TempDir & "scratch.bat", @TempDir, @SW_HIDE)
EndFunc怎么调用这一段

annybaby 发表于 2013-1-7 13:53:02

回复 13# fjvip

那也是个普通的自定义函数啊~~只不过是运用了一下编辑器的缩写功能实现了快速输入而已
    直接写函数名
页: [1]
查看完整版本: [已解决]如何让程序运行完后自行删除?