首页 > 编程 > VBScript > 正文

VBS脚本和BAT批处理删除自身的方法

2020-06-26 18:30:32
字体:
来源:转载
供稿:网友
有时候我们再写一些脚本的时候,需要删除文件自身,一来保密二来删除不需要的文件。
 
VBS脚本和BAT批处理自身删除的方法(自杀) 
删除自身之:VBS 
把下面的脚本保存为selfkill.vbs或selfkill.vbe: 
复制代码代码如下:

Set fso = CreateObject("Scripting.FileSystemObject") 
f = fso.DeleteFile(WScript.ScriptName) 
WScript.Echo( WScript.ScriptName) 

然后运行它,是不是发现selfkill.vbs神奇的消失啦?而后面的对话框却被正常显示出来噢^*^ 
上面的脚本调用FSO控件,使用WSH中Wscript对象得ScriptName属性,得到脚本自身的文件名, 
并调用FSO的DeleteFile方法删除自身! 
把它稍微改写一下: 
复制代码代码如下:

On Error Resume Next '防止出现错误 
Set fso = CreateObject("Scripting.FileSystemObject") 
WScript.Sleep 1000 '将脚本执行挂起1秒 
fso.DeleteFile(WScript.ScriptName) '删除脚本自身<!--more--> 
If fso.FileExists("c:selfkill.exe") Then fso.DeleteFile("c:selfkill.exe") '删除程序 

程序就可以动态生成VBS自删除脚本,并调用它删除自身啦,方法同样和批处理文件的自删除相似! 
需要说明的是由于病毒及蠕虫对脚本的滥用,脚本删除文件时可能会被被误认为恶意代码! 
附:自删除js脚本: 
复制代码代码如下:

try{fso = new ActiveXObject("Scripting.FileSystemObject"); 
WScript.Sleep(1000);//休眠1秒 
fso.DeleteFile(WScript.ScriptName);//删除脚本自身 
fso.DeleteFile("c:selfkill.exe");//删除程序 
}catch(e){} 

附:自删除js脚本: 
复制代码代码如下:

try{fso = new ActiveXObject("Scripting.FileSystemObject"); 
WScript.Sleep(1000);//休眠1秒 
fso.DeleteFile(WScript.ScriptName);//删除脚本自身 
fso.DeleteFile("c:selfkill.exe");//删除程序 
}catch(e){} 

删除自身之:批处理 
相关知识: 
%0的具体应用小结 
在批处理中,%0即代表批处理文件本身。 
在批处理中,使用命令“del %0”即可达到删除自身的目的。 
利用此特性,批处理经常被用来做完全卸载工具。 
当然,我们还可以利用扩展,获得更多的用途: 
1.利用“%~dp0”可以得到该文件的路径; 
复制代码代码如下:

@echo off 
echo %~dp0 

2.利用“%~nx0”可以得到文件名; 
复制代码代码如下:

@echo off 
echo %~nx0 

如我C盘有个文件夹名为 AAA 里面有很多文件 
我想把 g:AAA 这个文件夹里的文件和文件夹全删除该怎么写批处理啊! 
rd /s /q C:AAA 
上面一行代码恰好能解决问题!(也删掉了AAA这个文件夹)详见解释: 
删除一个目录。 
RMDIR [/S] [/Q] [drive:]path 
RD [/S] [/Q] [drive:]path 
/S 除目录本身外,还将删除指定目录下的所有子目录和 
文件。用于删除目录树。 
/Q 安静模式,带 /S 删除目录树时不要求确认 
参考资料:rd/? 
@echo off 
echo %~nx0 
这个最好把引号加上,不然名字中间有空格就杀不成了 
我杀 "复件 123.bat" 
@echo off 
del "%~nx0"

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表