中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何让自解压文件删除自身
作者:
标题: [已解决]如何让自解压文件删除自身 上一主题 | 下一主题
tclgb
初级用户

小子



积分 76
发帖 26
注册 2007-6-20
状态 离线
『楼 主』:  [已解决]如何让自解压文件删除自身


目的:自解压后自动删除1.exe

过程:我建了一个自解压的文件(如1.exe),里面仅有一个1.bat,自解压目录在%systemroot%
       我想在解压后自动删除1.exe,所以加入了del /q/f  1.exe
       结果,找不到1.exe的路径了

尝试一:把自解压目录设为.\也就是当前目录,这样可以自动删除1.exe,但会将有一定的显示延时,这种情况暂且不论;

尝试二:建一个1.bat(内容为:@echo %cd% > c:\cpath.txt),设为“解压前运行”,
          再建一个2.bat
          @for /f "tokens=*"  %%i  in (c:\cpath.txt) do set cpath=%%i
          @del /q /f "%cpath%\1.exe"
          结果"%cpath%读出来的是%systemroot%所在路径,失败了,呵呵

尝试三:建一个1.bat和2.bat,将2.bat建一个自解压文件2.exe,解压目录设
           为%systemroot%;将1.bat 和2.exe一起再建一个自解压文件1.exe,
           解压目录设为当前目录。原来的想法是:利用1.bat将解压出来的当前
           路径并将2.exe复制到%systemroot%下,再运行2.exe删除产生的文
           件。只是删除1.exe的时候老是会出现“拒绝访问。”,始终迈不过这个
           坎。还是想请大家帮忙给点意见,谢谢。

解决方案:方法如"尝试三",两个文件的内容如下:
1.bat
@echo off
echo %cd% > c:\windows\cpath.txt
start "hehe" "%cd%\2.exe"  >nul
del /q /f %0 >nul
2.bat
@echo off
@for /f "tokens=*"  %%i  in (c:\windows\cpath.txt) do set cpath=%%i
set "cpath=%cpath:~0,-1%"
taskkill /f /im 1.exe >nul
taskkill /f /im 2.exe >nul
del /f /q c:\windows\cpath.txt >nul
del /f /q "%cpath%"\1.exe  >nul
del /f /q "%cpath%"\2.exe  >nul
del /f /q %0 >nul
:)

代码还是有点乱,希望大家不要介意。也谢谢9楼兄弟的意见。
此代码在xp+sp2下测试通过。


[ Last edited by tclgb on 2007-7-10 at 10:36 PM ]

2007-7-7 21:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 2 楼』:  

好像winrar有个选项就是删除自身压缩文件的。



Windows 一键还原
http://www.yjhy.com
2007-7-7 21:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tclgb
初级用户

小子



积分 76
发帖 26
注册 2007-6-20
状态 离线
『第 3 楼』:  

谢谢lianjiang2004,能不能具体一点呢?

2007-7-7 22:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 4 楼』:  

是要删除自身文件

[ Last edited by haiou327 on 2007-7-8 at 01:32 AM ]

附件 1: 1exe.JPG (2007-7-8 01:32, 38.64 K,下载次数: 3)




欢迎进入我的网盘!!!
2007-7-8 01:30
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 5 楼』:  

BAT后面加上DEL 1.EXE 同时也要加上DEL %0,
用QBFC的魅影模式.

[ Last edited by haiou327 on 2007-7-8 at 01:36 AM ]



欢迎进入我的网盘!!!
2007-7-8 01:31
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
tclgb
初级用户

小子



积分 76
发帖 26
注册 2007-6-20
状态 离线
『第 6 楼』:  

re [haiou327]

  Quote:
Originally posted by haiou327 at 2007-7-8 01:31:
BAT后面加上DEL 1.EXE 同时也要加上DEL %0,
用QBFC的魅影模式.

[ Last edited by haiou327 on 2007-7-8 at 01:36 AM ]

加上del %0 是删除bat自身,还是无法删除自解压文件,呵呵

           谢谢

2007-7-8 02:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tclgb
初级用户

小子



积分 76
发帖 26
注册 2007-6-20
状态 离线
『第 7 楼』:  

还是希望兄弟们给点建议啊,谢谢谢谢谢谢

2007-7-9 00:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 8 楼』:  

在批处理最后加上DEL/q 自解压文件路径加文件名.



欢迎进入我的网盘!!!
2007-7-9 01:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 9 楼』:  

提示一下:
要删除一个可执行文件,
这个文件必须是未在windows系统中运行的(正在执行的无法删除)

利用延时指令+写代码的形式可以搞定这个问题.



知,不觉多。不知,乃求知
2007-7-10 12:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tclgb
初级用户

小子



积分 76
发帖 26
注册 2007-6-20
状态 离线
『第 10 楼』:  Re:flyinspace

经测试用延时并不能起到应该有的效果,不知道是否为本机原因
只好用taskkill了

2007-7-10 22:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luowei14
初级用户




积分 193
发帖 98
注册 2007-1-17
状态 离线
『第 11 楼』:  

10的朋友思路新鲜 taskkill 结束winrar进程 逆向解决了这个问题。。不错 加分



这家伙很聪明 什么都没留下
2007-7-13 12:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: