|
本帖最后由 acalephe 于 2014-4-29 18:48 编辑
简单批处理+WINRAR制作自解压文件并自爆(自删除)的土办法,自己给自己剃头。
产生这个想法的原因是制作内存系统RAMOS,一些常用的软件想把它放在内存,但有时临时想安点软件必须用到系统盘,又想再挤挤牙膏,节约点儿空间,因为有些程序并不是同时要用到的。
整个过程分三步:
1. 制作一个批处理文件,用BAT转exe工具转为exe可执行文件,该文件可通用,批处理命令非常简单
@ECHO OFF
MLD.bat
//这是第二步要用的批处理文件名,与本exe文件放在同一目录下
EXIT
2. 制作中间的批处理文件,为了方便修改,不建议转为exe可执行文件
@ECHO OFF
if "%1"=="h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
//不显示DOS的黑窗口
for /l %%i in (1,1,100) do echo %%i >nul
//计数1累加到100,延时用,不延时电脑可能不运行下一步,100这个数字可以稍微增大点,多用不了什么时间。
taskkill /f /im UnicornViewer.exe
//该命令强行结束前一步的exe文件,方便自解压文件解压后使用原文件名,如果不结束,自解压文件替换时就会出错,这是关键之处,这里以UnicornViewer为例。
for /l %%i in (1,1,100) do echo %%i >nul
//延时。
CALL SLF.EXE
//运行自解压文件,只要与此处文件名相同即可,此处使用SLF.EXE。
for /l %%i in (1,1,100) do echo %%i >nul
//延时。
del slf.exe /f
//删除自解压文件。
del %0
//删除本批处理文件自身。
EXIT
3. 用WINRAR制作自解压文件时,选择采用后台运行、完全覆盖的方式,并且令其在解压后运行原文件名,这里是UnicornViewer.exe,这样运行时屏幕只会闪几下而不会出现选择性窗口。
这是自解压文件的的说明:
Setup=UnicornViewer
Silent=1
Overwrite=1
这样就实现自解压并自爆了,当然方法很土了。而且也不是每试必灵的,我在做office绿色版时就遇到问题,如果用excel.exe和powerpnt.exe来解压这个压缩文件就没问题,如果用winword.exe的名称,taskkill就不能强行结束它,但改成word.exe就可以结束,可能是有win这个关键字符,被系统规避了,大多数软件都能够成功,想用NTSD又嫌麻烦,有兴趣可以试试。
有时如果制作不成功,可以把延时增加一些,或者删掉隐藏DOS窗口的几行(隐藏窗口还可以通过在系统中安装DOS强化工具nircmd来实现,这样就需要将第一步的第二行改为:nircmd execmd MLD.BAT)。
桌面快捷方式图标会变成你冒名文件的图标,很难看哦,所以可以用图标工具把源可执行文件的图标提取出来,在第一步用BAT变成EXE时修改为该图标。
示例文件:
http://pan.baidu.com/share/link?shareid=445792&uk=2031006351 |
|