2009-07-21 12 views

Antwort

2

die Aufgabe zu planen, können Sie den Task-Scheduler (example here)

Für ein Skript verwenden Sie

param($WorkDirectory = 'c:\work' 
    , $LogFile = 'c:\work\deletelog.txt') 

#Check to see if there is enough free space 
if (((Get-WmiObject -Query "SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = 'C:'").FreeSpace/1GB) -lt 5) 
{ 
    #Get a list of the folders in the work directory 
    $FoldersInWorkDirectory = @(Get-ChildItem $WorkDirectory | Where-Object {$_ -is [System.IO.DirectoryInfo]} | Sort-Object -Property LastWriteTime -Descending) 
    $FolderCount = 0 

    while (((Get-WmiObject -Query "SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = 'C:'").FreeSpace/1GB) -lt 5) 
    { 
      #Remove the directory and attendant files and log the deletion 
     Remove-Item -Path $FoldersInWorkDirectory[$FolderCount].FullName -Recurse 
      "$(Get-Date) Deleted $($FoldersInWorkDirectory[$FolderCount].FullName)" | Out-File -Append $LogFile 

      $FolderCount++ 
    } 
} 
verwenden könnte
0

Nun, das hängt davon ab, wie Ihre Ordner "verwendet" werden. Wenn es keine einfachen Indikatoren gibt, können Sie versuchen, die Klasse .NET FileSystemWatcher zu verwenden, um nach Änderungen zu suchen und sie zu speichern, sowie einen Zeitstempel in einer Warteschlange, sortiert nach Zugriffszeit. Dann können Sie den nächsten zu löschenden Ordner aus dieser Warteschlange auswählen. Aber es ist sicherlich nicht schön.