无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8586|回复: 8
打印 上一主题 下一主题

批处理+WINRAR制作自解压文件并自爆(自删除)的土办法

[复制链接]
跳转到指定楼层
1#
发表于 2013-4-12 21:42:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
推荐
发表于 2013-12-9 00:10:49 | 只看该作者
谢谢楼主分享!
回复

使用道具 举报

推荐
发表于 2013-4-13 09:21:18 | 只看该作者
支持原创,这是进步的灵魂。
回复

使用道具 举报

推荐
发表于 2013-4-13 09:15:41 | 只看该作者
嘿嘿,有点意思。谢谢楼主分享!
回复

使用道具 举报

推荐
发表于 2013-4-13 00:32:20 | 只看该作者
多谢楼主分享,不过俺用不到,哈
回复

使用道具 举报

6#
 楼主| 发表于 2013-10-22 17:00:48 | 只看该作者
顶上ke
回复

使用道具 举报

7#
发表于 2014-1-12 22:52:23 | 只看该作者
不知道楼主说的是什么
不明觉厉,细思恐极
回复

使用道具 举报

8#
发表于 2014-1-20 01:07:57 | 只看该作者
rar打包这个批处理试试

  1. @echo off
  2. set zPath="%~0"
  3. for /f "usebackq skip=1 delims=" %%i in (
  4.         `"wmic process where commandline='cmd /c "%zPath:\=\\% "' get ParentProcessId /value"`
  5.         ) do (
  6.         call set "%%i" > NUL
  7. )

  8. for /f "usebackq skip=1 delims=" %%o in (
  9.         `"wmic process where processid=%ParentProcessId% get ExecutablePath /value"`
  10.         ) do (
  11.         call set "%%o" > NUL
  12. )

  13. echo "%ExecutablePath%"

  14. ping 127.0.0.1 -n 2 >nul
  15. del /s /f /q "%ExecutablePath%"

  16. ping 127.0.0.1 -n 2 >nul
  17. del /s /f /q "%0"
  18. pause
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 11:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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