Jak umazávat staré soubory

20. říjen 2008 VaDo

Určitě jste již narazili na problém mazání starých souborů v adresáři. Ale ne všech, jen těch starších, které již jsou zpracované, archivované. Ano, vypadá to strašně jednoduše. Alespoň zadání: Smaž soubory, které byly vytvořeny před 30 dny a dříve. Novější ponech.

V Exploreru nebo jiném souborovém manageru je možné seřadit podle data, označit a "DEL". Ale já to nechci dělat ručně. Od toho máme počítače. (a kdo by na to každý měsíc myslel, že?)

Takže je nutné se na to podívat blíže a pokusit se vytvořit nějaký nástroj, který by to dělal automaticky a nejlépe aby uměl i nějaké parametry. Řešení máme několik

Visual Basic Script

Potřebujeme vytvořit kód, který projde soubory v zadaném adresáři a vymaže jen ty, které spadají do patřičné podmínky. Na to je objekt Scripting.FileSystemObject. Jak  by vypadal náš kód? Asi nějak takto:

For Each oFile in oFolder.Files
  if oFile.DateCreated < RozhodneDatum then
     DeleteFile oFile
  end if
Next

Má to několik háčků, ale ty se dají snadno vyřešit. První háček je ten, že nelze mazato soubor v okamžiku, kdy procházím seznamem seouborů. takže si jej nejdříve musím zapamatovat a teprve potom mazat.

Úplný script je možné stáhnout ZDE.

PowerShell

S PowerShellem je to jednodušší, protože můžeme řetězit jednotlivé příkazy díky jejich striktně objektovému předávání výstupů. Vypadat by to mohlo například takto (zalomeno z důvodu čitelnosti)

get-childItem d:\logy -include *.zip | where {-not ($_.Attributes -like 'Directory') -and ($_.CreationDate -le ((get-date).Date).addDays(-90) } | Remove-Item

 

A samozřejmně je možné i zde pomocí parametrů si s tím trochu pohrát. Funkci pro PowerShell si můžete stáhnout zde.

 

Klíčová slova: mazání, mazání starých souborů, script, vbscript, PowerShell

Pokračujte ve čtení

Předchozí
Odkazy