Preciso excluir arquivos com mais de dois dias dentro de uma pasta, exceto os arquivos modificados pela última vez no primeiro dia de cada mês. Forfiles não oferece suporte a exceções. O sistema operacional é o Windows Server 2003. Alguma ideia?
Obrigado a todos pela ajuda!
Responder1
VBScript rápido e sujo aqui, ele assume o formato de data do Reino Unido para enumerar se o arquivo for do primeiro dia do mês. Se você usar um formato de data diferente, altere o comando trim para obter as posições numéricas apropriadas. Por exemplo, uma data nos EUA seria Mid(objFile.DateLastModified, 4, 2) = 01 em vez de Left(objFile.DateLastModified, 2) = 01
De qualquer forma, desculpe pelo código sujo... mas isso deve ajudar você a começar.
strFolder = "C:\DeleteTest"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
strDaysOld = 2
'Get files from target folder
For Each File in colFiles
set objFile = objFSO.GetFile(strFolder & "\" & File.Name)
'Enumerate last modified date/time and delete if older than 2 days but where the date doesn't start with '01'
If objFile.DateLastModified < (Date() - strDaysOld) AND NOT Left(objFile.DateLastModified, 2) = 01 Then
objFSO.DeleteFile objFile, true
End If
Next
Responder2
Eu diria que isso dependeria da sua familiaridade e conforto com linguagens de programação/script.
Por exemplo, aqui está um PowerShellexemplo. Sou um pouco mais parcial em relação às variedades Python, Perl (*nix/Linux) e algo assim seria bem fácil em Python (exemplo).
Ambos os exemplos vieram do Googlepowershell exclui arquivos anteriores aoupython exclui arquivos anteriores a...caso você queira verificar alternativas.
Não estou familiarizado com nenhuma ferramenta GUI ou ferramenta de configuração rápida para fazer isso, pois nunca precisei realmente delas. Tudo o que você pergunta pode ser codificado em menos de 20 linhas na maioria dos casos.