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"