Como Ramhound disse em seu comentário, a maneira mais fácil de atingir esse objetivo é usar o PowerShell. Aqui está um script simples para fazer isso:
$list = Get-ChildItem -Path c:\temp | Sort-Object LastWriteTime -Descending | Select-Object -Last 10
$list | Remove-Item -Force -WhatIf
Este script irá apagar os 10 arquivos mais antigos na pasta C: \ Temp. Observe que o parâmetro -Whatif permite verificar o que esse comando fará, sem realmente executá-lo. Simplesmente remova este parâmetro quando estiver pronto para executar a operação.
Claro, você pode fazer este script em execução em uma tarefa agendada , assim como você faz com arquivos exe ou em lote.
[UPDATE]: Como o título foi confuso, aqui está a atualização da minha resposta:
$dnd = Get-ChildItem -Path c:\Test -Directory | Sort-Object LastWriteTime -Descending | select -last 2
$list = Get-ChildItem -Path c:\Test -Directory
$list | Remove-Item -Recurse -Force -Exclude $dnd -WhatIf
Explicações:
- a variável $ dnd (não excluir) conterá a lista de pastas para manter: no meu exemplo, as 2 mais antigas do diretório C: \ Test;
- a variável $ list listará todas as pastas em c: \ Test;
- a terceira linha do script excluirá as pastas com força, excluindo todas as contidas na variável $ dnd . Não se esqueça de remover a opção -WhatIf quando tiver certeza.
Espero que isso ajude!