Portanto, no trabalho de fazer backups, preciso de um script em lote que permita excluir arquivos em um diretório especificado, com mais de 3 dias, digamos. Este script será definido como uma tarefa agendada para execução em um horário especificado todos os dias.
windows-server-2008-r2
batch-file
Chiggins
fonte
fonte
Respostas:
Se o PowerShell for aceitável (como deveria, como ativado por padrão no Server 2008+), tente o seguinte:
Souce aqui .
fonte
Remove-Item $File -whatif | out-null
. Para executar como uma tarefa de agendamento, o trabalho deve especificar o caminho completo para powershell.exe com o script nomeado como argumento.Onde
-5
é a idade dos arquivos que você deseja excluir (5 dias ou mais, neste caso). Este script está excluindo.rar
arquivos - solte o botão-m *.rar
se você deseja excluir qualquer tipo de arquivo.fonte
Se você insistir em usar arquivos em lote, Robocopy.exe é sua resposta. É rápido (multithread) e muito robusto. Para o seu cenário, você pode usar o seguinte como um guia:
Há uma longa lista de opções, por favor, faça a robocopy /? ver todos eles. Você pode até usá-lo para fazer backups incrementais, agendar, criar perfis de backup etc.
fonte
Eu gosto de usar DelEn.exe para isso.
Delen - DELete ENhanced - é uma versão aprimorada do DEL. Ele suporta curingas estendidos e diretórios pai, bem como filtros de data, hora e tamanho. Os arquivos podem ser excluídos da exclusão.
fonte
Você pode olhar para o DelAge32 de Horst Schaeffer:
http://home.mnet-online.de/horst.muc/wbat32.htm#top
Seu comando pode ser tão simples quanto:
Eu tenho esse comando sendo executado como uma tarefa agendada.
fonte
Este é um script do PowerShell que escrevi para fazer o que você deseja - também um pouco mais. Eu o uso para limpar logs e outros arquivos temporários.
purge-dem-logs.cmd
purgelogs.ps1:
fonte
Isso não funcionará para computadores remotos. Os administradores precisam gerenciar vários computadores. Abaixo está o script que pode ser usado para excluir pastas em vários computadores remotos sem precisar fazer login.
O script abaixo excluirá pastas com mais de 15 dias. você pode alterar o parâmetro $ days.
D $ \ Arquivos de programas (x86) \ Research In Motion \ BlackBerry Enterprise Server \ Logs é o caminho UNC da pasta Blackberry Log. Você pode alterar o diretório em que seus logs / pastas estão localizados.
Liste todos os nomes de servidor no arquivo servers.txt e ele deve estar localizado no mesmo diretório que este script.
Salve o script como .ps1 e execute-o. Você pode agendá-lo via arquivo em lotes. Dessa forma, você precisa adicionar o comando Alterar Diretório no início do script.
Diverta-se.
fonte
Como uma abordagem alternativa: em vez de depender de consultar o sistema de arquivos para obter os horários de criação de arquivos (e acessar os mesmos arquivos por vários dias, até que eles expirem), você pode adicionar o arquivo a um índice próprio no momento da criação. O índice pode ser tão simples quanto um arquivo nomeado após a data de criação, armazenado em um local conhecido, com um arquivo por linha.
Se você tiver um aplicativo multithread / multiprocess criando arquivos, convém que seu índice seja tratado de uma maneira mais sofisticada.
A vantagem seria que você sempre tem uma lista de arquivos relativamente simples processada, criada em um determinado dia, para iterar, em vez de precisar pedir repetidamente ao sistema de arquivos detalhes.
(Isso dependeria do aplicativo e da criação do arquivo, sendo gerenciado por você e não por terceiros).
fonte