首页 | 技巧收集 | 资源分享 | 网管文集 | 开发资料 | 生活点滴 | 轻松一下 | 原创作品 | 网海拾贝 
用户登陆
用户:
密码:
 

相关文章
使窗体大小不依赖屏幕...
edit呈下划线的代码
15位身份证号码转1...
Delphi程序的时...
Delphi:关于写...

文章搜索

 标题   内容

IISLockdown2.1 使用说明 MP3:MP3:oh!必胜,奉顺英片头曲
晴天 批处理文件的自删除功能及其应用
[ 分类:开发资料 ]   [阅读:20393 ]   [ 日期:2005-5-25 ]   [ 来自:CSTC文档中心 ]
CSDN开发高手第10期的“在Win32下自删除可执行文件”一文曾提到了批处理文件的自删除功能,这立刻钩起我的兴趣,写下此文,因为我的程序经常采用这种方法进行卸载。 

    批处理文件是一个扩展名为bat的文本文件,里面集成了多条用户想一次运行的命令,当用户键入该批处理文件的文件名后,系统就会逐条解释并执行文件中包含的部分或者全部命令。我们可以使用任何文本编辑器来编写他,也可以通过程序生成一个文本文件,并自动向其中添加命令。先简单的生成一个bat文件,让我们看看删除功能是如何实现的。新建一个文本文件,在里面填入 

del test.txt 
del %0 

    将文件保存为Test.bat,并且在同一目录下建立一个Test.txt文件。运行刚刚生成的Test.bat文件,你会发现Test.txt和Test.bat文件同时消失了。文件中的第一行使用了DOS命令del删除test.txt文本文件,第二行中的%0代表批处理文件本身。现在我给大家演示如何用程序动态生成批处理文件实现程序卸载功能。 

    在Delphi中新建一个应用程序,并在窗口里放上一个按钮,双击按钮生成它的OnClick事件,填入如下代码: 

AssignFile(BatchFile, ‘UnInstall.bat’); 
Rewrite(BatchFile); 

Writeln(BatchFile, 'del "Project1.exe"'); 
Writeln(BatchFile, 'del %0'); 
CloseFile(BatchFile); 

它的功能是生成文本格式的批处理文件,接下来我们需要运行生成的UnInstall.bat程序,所以在后面继续添加代码: 

ShellExecute(Application.Handle,'nil','UnInstall.bat',nil,nil,SW_HIDE); 

    通过这个函数可以调用生成的批处理文件;另外使用ShellExecute函数时不要忘记在uses里加上ShellAPI文件。编译该代码,运行,点击按钮,随后Project1.exe和UnInstall.bat程序都被删除。至此,一个简单的卸载程序完成了。

    为了严谨,上面的代码还可以继续完善,比如在批处理文件中使用if exist [path&filename] goto语句测试要删除的文件是否存在,文件名使用绝对路径等等,这可以根据需要自行选择。



引用通告地址 (0):
复制引用地址http://www.pxue.com/trackback.asp?tbID=383
复制引用地址http://www.pxue.com/trackback.asp?tbID=383&CP=GBK
Tag: Delphi
引用这个评论 MadGoat 于 2005-11-04 11:12 AM 发表评论: 
测试环境:win2ksp4,不是纯DOS,CMD窗口运行的。
如下:
C:\>dir 1.*
 驱动器 C 中的卷没有标签。
 卷的序列号是 0C96-2EBD

 C:\ 的目录

2005-11-04  11:08                   19 1.bat
2005-11-04  11:09                   15 1.txt
               2 个文件             34 字节
               0 个目录  5,143,592,960 可用字节

C:\>1

C:\>del 1.txt

C:\>del 1
找不到 C:\1

C:\>dir 1.*
 驱动器 C 中的卷没有标签。
 卷的序列号是 0C96-2EBD

 C:\ 的目录

2005-11-04  11:08                   19 1.bat
               1 个文件             19 字节
               0 个目录  5,143,601,152 可用字节

C:\>type 1.bat
del 1.txt
del %0

C:\>

引用这个评论 飘雪 于 2005-11-03 05:46 PM 发表评论: 
偶这里测试通过,偶地运行环境是WIN2K3,你的运行环境?不要告诉我是在纯DOS模式下喔.如果在纯DOS模式下,应该看相应的帮助.

引用这个评论 MadGoat 于 2005-11-03 10:53 AM 发表评论: 
您好,我测试了一下,该批处理在DOS下,是无法删除自身的,并提示找不到文件。

发表评论
作者: 用户名: 密码:  同时注册?验证码: 验证码,看不清楚?请点击刷新验证码
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 
COPYRIGHT © 飘雪工作室 WWW.PXUE.COM ALLRIGHTS RESERVED Processed in 0.140625 second(s) , 15 queries
粤ICP备05001034号