有時候我們再寫一些腳本的時候,需要刪除文件自身,一來保密二來刪除不需要的文件。
VBS腳本和BAT批處理自身刪除的方法(自殺)
刪除自身之:VBS
把下面的腳本保存為selfkill.vbs或selfkill.vbe:
代碼如下:
Set fso = CreateObject("Scripting.FileSystemObject")
f = fso.DeleteFile(WScript.ScriptName)
WScript.Echo( WScript.ScriptName)
然后運(yùn)行它,是不是發(fā)現(xiàn)selfkill.vbs神奇的消失啦?而后面的對話框卻被正常顯示出來噢^*^
上面的腳本調(diào)用FSO控件,使用WSH中Wscript對象得ScriptName屬性,得到腳本自身的文件名,
并調(diào)用FSO的DeleteFile方法刪除自身!
把它稍微改寫一下:
代碼如下:
On Error Resume Next '防止出現(xiàn)錯誤
Set fso = CreateObject("Scripting.FileSystemObject")
WScript.Sleep 1000 '將腳本執(zhí)行掛起1秒
fso.DeleteFile(WScript.ScriptName) '刪除腳本自身<!--more-->
If fso.FileExists("c:selfkill.exe") Then fso.DeleteFile("c:selfkill.exe") '刪除程序
程序就可以動態(tài)生成VBS自刪除腳本,并調(diào)用它刪除自身啦,方法同樣和批處理文件的自刪除相似!
需要說明的是由于病毒及蠕蟲對腳本的濫用,腳本刪除文件時可能會被被誤認(rèn)為惡意代碼!
附:自刪除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){}
刪除自身之:批處理
相關(guān)知識:
%0的具體應(yīng)用小結(jié)
在批處理中,%0即代表批處理文件本身。
在批處理中,使用命令“del %0”即可達(dá)到刪除自身的目的。
利用此特性,批處理經(jīng)常被用來做完全卸載工具。
當(dāng)然,我們還可以利用擴(kuò)展,獲得更多的用途:
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 刪除目錄樹時不要求確認(rèn)
參考資料:rd/?
@echo off
echo %~nx0
這個最好把引號加上,不然名字中間有空格就殺不成了
我殺 "復(fù)件 123.bat"
@echo off
del "%~nx0"