Dicas – Fazendo uma auto exclusão de um arquivo

Mais uma do fórum, que está cada dia melhor!

A auto exclusão de um arquivo é algo um pouco assustador. Conceitualmente é até difícil pensar nisso. Mas como tudo depende do quanto você precisa, alguém sempre acha a solução. Como vi pouquíssimas menções a soluções deste problema, bom, lá vai.

O camarada M. Gallant publicou o VBScript abaixo que efetua sua auto exclusão. Bom, não resolve tudo, mas como não é tão simples efetuar a operação, a idéia á utilizar o vbs para efetuar a operação de exclusão do arquivo desejado e deixar o script de auto exclua em seguida. A explicação e os créditos estão do próprio código.

'***************************************************************
' selfdel.vbs demonstrates a wsh script which can dynamically 
' remove (delete) itself on completion.
' A batch file is dynamically created which is then executed
' at the end of the wsh script. The batch file deletes this
' script file, after execution stops using a test loop.
' 
' The batch file also deletes itself as a final cleanup step.
' Based on Jeffrey Richter  Jan/1996  MSJ Win32 Q & A:
'  http://www.microsoft.com/msj/defaulttop.asp?page=/msj/archive/SF9C.htm
'
'  http://home.istar.ca/~neutron/wsh
'	
'                                        M. Gallant  10/03/2002
' ***************************************************************
 
Option Explicit
Dim oShell, fso, f, scriptfile, Message
Const Title = "SelfDel"
Const ForReading = 1, ForWriting = 2
Const deltime = 3
Const target = "target.txt"
Const batchfile = "_cleanup.bat"
 
scriptfile = WScript.ScriptFullName
Message = "This script """ & scriptfile & """ will self-destruct in " & _
	deltime & " seconds"
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Popup Message, deltime, Title, vbOKONLY + vbExclamation
 
Set fso = CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(batchfile, ForWriting, True)
 
 f.WriteLine ":Loop"
 f.WriteLine "del " & """" & scriptfile & """"
 f.WriteLine "if exist """ & scriptfile & """ goto Loop"
 f.WriteLine "del %0"
 f.close
 
set fso = nothing
set f = nothing
 
oShell.Run batchfile,0
set oShell = nothing

Bom proveito!

Comentários

comentários