5ギガバイトの空き容量が使用可能になるまでどのように私はLRUフォルダを削除することができますか?

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

質問

と言う、フォルダを考える\\localhost\c$\work\ます。

私は、空き領域の5ギガバイトが利用可能である保証し、15分ごとにPowerShellスクリプトを実行したいと思います。

<5ギガバイトが利用可能である、作業中に最低使用フォルダを削除するまで>が

5ギガバイトが利用可能です。

思考?

役に立ちましたか?

解決

タスクをスケジュールするには、ここでタスクスケジューラ(例を使用することができますする

スクリプトのためにあなたが使用することができます。

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