Preciso de ajuda para criar um arquivo em lote que excluirá arquivos de log em D:/folderx em Server:\serverx Isso elimina o processo manual de limpeza do disco para evitar uma página sem espaço em disco. Arquivos com extensão .txt, .trc e .phd com mais de 5 dias devem ser excluídos.
Alguém tem alguma ideia?
desde já, obrigado
Dan
Responder1
Acontece que tenho algo assim por aí.
forfiles -p "D:/folderx" -s -m *.* /D -5 /C "cmd /c del @path /q
São todos os arquivos; para especificar extensões, você modificaria o *.*
bit.
forfiles -p "D:/folderx" -s -m *.txt /D -5 /C "cmd /c del @path /q
forfiles -p "D:/folderx" -s -m *.trc /D -5 /C "cmd /c del @path /q
forfiles -p "D:/folderx" -s -m *.phd /D -5 /C "cmd /c del @path /q
(Eu ainda chuto o velho skool às vezes porque tenho uma biblioteca de coisas antigas que posso reutilizar. Estou reescrevendo essa biblioteca no PowerShell, com o passar do tempo.)
Responder2
Concordo com outros comentários de que o PowerShell deve ser usado daqui para frente para esses tipos de tarefas de automação. Aqui está um pequeno script que realizaria a limpeza que você descreve. Você pode encontrar várias maneiras de executar o PowerShell a partir de um arquivo em lote se precisar por algum motivo, por exemploesta resposta. Melhor ainda, basta executar diretamente de uma tarefa agendada ou de uma ferramenta de automação.
Roteiro de exemplo:
$DIRECTORY = "D:\folderx"
$MAX_AGE_DAYS = 5
$matchedFiles = Get-ChildItem $DIRECTORY | where {$_.Extension.ToLower() -match "txt|trc|phd" -and $_.CreationTime -lt (Get-Date).AddDays(-1*$MAX_AGE_DAYS)}
$matchedFiles | Remove-Item