找回密码
 加入
搜索
查看: 5397|回复: 15

如何在执行重启命令后,实现自我删除?

[复制链接]
发表于 2008-11-11 10:25:03 | 显示全部楼层 |阅读模式
如何在AU3程序中执行重启命令后,实现自我删除?

为此我试过使用以下命令....

但都是无法实现自删除...请教下高手们......



Shutdown(6)   ;强制重启

;删除脚本程序自身
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)
;删除脚本所在目录的一切东西
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&rd /q/s "'&@ScriptDir&'"',@ScriptDir,@SW_HIDE)


=====================================================


感谢 liongodmien 的热情帮助

>_<  下次偶会自个努力处理,不到再来问的哈.

[ 本帖最后由 黑琦一护 于 2008-11-11 15:54 编辑 ]
发表于 2008-11-11 10:35:48 | 显示全部楼层
不知道楼主搞这个自我删除是做什么的?!
 楼主| 发表于 2008-11-11 10:39:54 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 10:35 发表
不知道楼主搞这个自我删除是做什么的?!


让系统调用后,进入优化,然后,重启,再自我删除....

简单的说...就是搞系统需要这个功能....
发表于 2008-11-11 10:43:43 | 显示全部楼层
原帖由 黑琦一护 于 2008-11-11 10:39 发表


让系统调用后,进入优化,然后,重启,再自我删除....

简单的说...就是搞系统需要这个功能....

哦,希望不是搞破坏的...我没测试过...

Run(@ComSpec&' /c ping 127.0.0.1 -n 5&del /q "'&@AutoItExe&'"',@ScriptDir,@SW_HIDE)
Exit
 楼主| 发表于 2008-11-11 10:49:46 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 10:43 发表

哦,希望不是搞破坏的...我没测试过...

Run(@ComSpec&' /c ping 127.0.0.1 -n 5&del /q "'&@AutoItExe&'"',@ScriptDir,@SW_HIDE)
Exit


请问一下

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

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

两者的区别是???

另外我自己也想了一个思路不知道能不能行....

不知是否可行的一个思路

用两个au3,第一个用来使用优化,在最后调用第二个au3

第二个au3用来实行删除第一个au3后,再实现重启功能


Func _RunDOS( $sCommand )
Return RunWait( @ComSpec & " /C """ & $sCommand & """", "", @SW_HIDE )
EndFunc
msgbox(0,"系统设置","系统完成设置,重启,并清理无用文件")
_RunDOS("rd %SYSTEMDRIVE%\hao /s /q")

shutdown(6)
发表于 2008-11-11 10:55:19 | 显示全部楼层
那不是始终要留下一个?!

要删除自身:
一要重启后程序要运行;
二要在调用@COMSPEC后马上退出;
三要被调用的延时足够让程序完全退出后才进行删除动作!

PING -N 3 只不过是要一个延时,其它同DOS下的命令
 楼主| 发表于 2008-11-11 11:07:50 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 10:55 发表
那不是始终要留下一个?!

要删除自身:
一要重启后程序要运行;
二要在调用@COMSPEC后马上退出;
三要被调用的延时足够让程序完全退出后才进行删除动作!

PING -N 3 只不过是要一个延时 ...


恩,,那个方法的确会始终留下一个的。。。

其实第一个au3一定要删,第二个就可以留下,我是这想的

当然最好是都能自删除,等下试下你提供的方法,谢谢你

对了,以下这个命令,可以这样配合使用吗?再问下..先后有什么区别?

shutdown(6)

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

[ 本帖最后由 黑琦一护 于 2008-11-11 11:08 编辑 ]
发表于 2008-11-11 11:59:11 | 显示全部楼层
重启了之后要再运行程序,要不怎么能删除自身呢?

所以把重启也放在了那个调用命令行里的好!
 楼主| 发表于 2008-11-11 12:48:56 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 11:59 发表
重启了之后要再运行程序,要不怎么能删除自身呢?

所以把重启也放在了那个调用命令行里的好!


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

只用这个命令就可以了? 重启的不用加了?

3Q....
发表于 2008-11-11 14:45:18 | 显示全部楼层
原帖由 黑琦一护 于 2008-11-11 12:48 发表


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

只用这个命令就可以了? 重启的不用加了?

3Q....

重启只是用于对设置的修改,删除程序自身,当然是不用重启的了!
 楼主| 发表于 2008-11-11 15:37:48 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 14:45 发表

重启只是用于对设置的修改,删除程序自身,当然是不用重启的了!


恩,这点理解了,我刚刚测了一下,
这条命令与FAQ大全里的那个作用一样...也是删除程序自身...
但由于我需要配合重启命令..使用...
当用shutdown(6),再配合这条删除程序自身命令后,就会出现以下的现象

系统重启了,但程序并没有自身删除.......

代码应该没有错,不知道问题出在那?  可以麻烦你给个例子吗?
发表于 2008-11-11 15:48:10 | 显示全部楼层
程序重启并删除自身:

Run(@ComSpec&' /c ping 127.0.0.1 -n 5&del /q "'&@AutoItExe&'"&shutdown -t 0 -f -r',@ScriptDir,@SW_HIDE)
Exit
发表于 2008-11-11 15:49:17 | 显示全部楼层
最后一系列的操作都用调用外部程序完成,程序在调用了外部程序后就马上退出!
 楼主| 发表于 2008-11-11 15:53:04 | 显示全部楼层
原帖由 liongodmien 于 2008-11-11 15:48 发表
程序重启并删除自身:

Run(@ComSpec&' /c ping 127.0.0.1 -n 5&del /q "'&@AutoItExe&'"&shutdown -t 0 -f -r',@ScriptDir,@SW_HIDE)
Exit


谢谢,我自己也想到了一个

_RunDOS("shutdown -r -t 5 -c what???")

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

呵呵,,同时也很感谢你,了解命令可以附加使用的了....
发表于 2010-8-31 14:00:38 | 显示全部楼层
对于这些  /c ping 127.0.0.1 -n 3&del /q  不懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 20:33 , Processed in 0.084127 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表