كيف يمكنني حذف مجلدات LRU حتى تتوفر مساحة خالية من 5 جيجابايت؟

StackOverflow https://stackoverflow.com/questions/1161891

سؤال

إعطاء مجلد، قل \\localhost\c$\work\.

أرغب في تشغيل برنامج نصي PowerShell كل 15 دقيقة يضمن مساحة 5 جيجابايت من المساحة الحرة المتاحة.

إذا كان <5GB متاحا، فقم بإزالة مجلد المستخدم المستخدمة مؤخرا في العمل حتى> 5GB متاح.

أفكار؟

هل كانت مفيدة؟

المحلول

لجدولة المهمة، يمكنك استخدام جدولة المهام (مثال هنا)

للحصول على برنامج نصي يمكنك استخدامه

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++
    } 
}

نصائح أخرى

حسنا، أن كل هذا يتوقف على كيفية "استخدام مجلداتك". إذا لم تكن هناك مؤشرات سهلة يمكنك محاولة استخدام .NET filesystemwatcher. فئة للبحث عن التغييرات وتذكرها وكذلك الطابع الزمني في قائمة الانتظار، أمرت عن طريق وقت الوصول. ثم يمكنك اختيار المجلد التالي للحذف من تلك الانتظار. لكنها بالتأكيد ليست جميلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top