Press "Enter" to skip to content

vbscript na mazání souborů starších daného data

Určitě jste někdy potřebovaly odmazat z nějaké složky soubory starší než definované datum, například generované pdf, fotografie z kamerového systému, a nebo logy z web serveru. Tento šikovný script problém hravě vyřeší za Vás. Můžete ho pustit v plánovači a nechat ho běžet pravidelně.

V systémech windows jsou soubory *.vbs automaticky asociované s programem „vb script host“ který provádí vykonání.

  • Proměnná pocetdnizpet nastavuje počet dnů od aktuálního data zpět, na těchto souborech se provádí mazání. Hodnotu si upravte podle svých potřeb.
  • Proměnná cesta je umístění adresáře který se má dávkou procházet, pokud se jedná o síťový disk je potřeba jej mít persistentně mapovaný pod účtem pod kterým pouštíme dávku.
  • Pokud logika nemůže soubor odmazat, například na něj nemá oprávnění, nebo je soubor chráněn proti přepsání či použit jiným procesem, tak jej přeskočí a pokračuje dále.
  • Pokud by jste chtěly funkci integrovat tak má také návratovou hodnotu, a tou je počet odmazaných souborů. Může pak třeba poslat email s počtem smazaných souborů a údajem o volném místě před a po dokončení.
Option Explicit
' spouštějte jen na vlastni nebezpečí.
dim pocetdnizpet : pocetdnizpet = Date() - 2
dim cesta : cesta = "W:\mujadresar\"
' Tenhle kousek kodu na danem umisteni smaze vsecky polozky v adresari a jeho podadresarich starsi daneho data.
Function DirWalkEx(parmPath,dTwoWeeksAgo)
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim oSubFolder, oFolder, n
dim pocetsmazanych
On Error Resume Next 'kdyz nejde smazat dem dal
Set oSubFolder = fso.getfolder(parmPath)
if fso.FolderExists(parmPath) then
For Each oFolder In oSubFolder.SubFolders
If Err.Number <> 0 Then ' if we got an error, just skip this entry
Err.Clear
elseIf oFolder.DateCreated < dTwoWeeksAgo Then
fso.DeleteFolder oFolder.Path, True
pocetsmazanych=pocetsmazanych+1
End If
Next
else
Wscript.Echo "Adresář nebyl nalezen"
end if
DirWalkEx=pocetsmazanych
On Error Goto 0 ' navrat k normalnimu error handleru
End Function
call DirWalkEx(cesta,pocetdnizpet)

Ať slouží.