O Forfiles irá executar comandos em arquivos e pastas que correspontam à determinados critérios.
Ele permite que você defina curingas, escolha apenas pastas, apenas arquivos, e o mais importante é que ele permite que você especifique algo
como “Eu só quero os arquivos que tem mais de um dia de idade”
Primeiro, deixe-me mostrar os possíveis argumentos dele:
/P Path Name: Indica o path para iniciar a busca. A pasta padrão é a pasta de trabalho atual.
/M Search Mask: Pesquisa arquivos de acordo com uma máscara de busca. A máscara de pesquisa padrão é “*”
/S SubDirectories: Orienta o Forfiles a fazer uma busca recursiva em sub-diretórios. Similar ao comando “dir /s” do DOS.
/C Command: Indica o comando à ser executado para cada arquivo. Cadeias de comandos devem ser inseridas em aspas duplas.
As seguintes variáveis podem ser utilizadas na cadeia de comandos:
@File – retorna o nome do arquivo.
@Fname – retorna o nome do arquivo sem extensão.
@Ext – retorna apenas a extensão do arquivo.
@Path – retorna o caminho completo do arquivo.
@Relpath – retorna o caminho relativo do arquivo.
@Isdir – retorna “TRUE” se um tipo de arquivo é um diretório, e “falso” para arquivos.
@Fsize – retorna o tamanho do arquivo em bytes.
@Fdate – retorna a data da última modificação do arquivo.
@Ftime – retorna o tempo da última modificação do arquivo.
Para incluir caracteres especiais na linha de comando, use o código hexadecimal para o caracter no formato 0xHH (ex.: 0x09 para um tab).
Comandos cmd.exe internos devem ser precedidos de “cmd c /”.
/D data seleciona arquivos em que a data da última modificação foram maior ou igual a (+), ou menor ou igual a (-), à data especificada usando o formato “yyyy/MM/dd”, ou seleciona arquivos com a data da última modificação seja maior ou igual a (+) data atual mais “dd” dias, ou menor ou igual a (-) data atual menos “dd” dias. São válidos quaisquer números “dd” no intervalo de 0 à 32768.
O “+” é tomado como sinal padrão se não especificado.
Legal, então vamos ao que interessa:
Vamos começar com o caminho. Queremos que ele procure em c:windowstemp
forfiles -p "c:\windowstemp"
Quero incluir subpastas:
forfiles -p "c:\windowstemp" -s
Usando a opção de data, eu quero qualquer coisa com mais de um dia de idade:
forfiles -p "c:\windowstemp" -s -d -1
Eu só quero apagar os arquivos que terminam com .tmp:
forfiles -p "c:\windowstemp" -s -d -1 -m *.tmp
E, finalmente, o comando que desejo executar nos arquivos encontrados, no caso é o DEL:
forfiles -p "c:\windowstemp" -s -d -1 -m *.tmp -c "cmd /c del /f /q @path"
Observe o uso da variável @path – é uma das muitas variáveis que o Forfiles reconhece.
Linha de comando que vai apagar arquivos da nossa pasta temp com mais de 1 dia de idade:
forfiles -p "c:\windowstemp" -s -d -1 -m *.tmp -c "cmd /c del /f /q @path"
Listar os arquivos que foram modificados nos últimos três dias, na pasta atual de trabalho, recursivamente
forfiles /s /d +3
Listar os arquivos que foram modificados antes da data de 17/10/2013, na pasta do Windows.
forfiles /p c:\windows\ /d -17/08/2013
Listar os arquivos que foram modificados após a data de 17/10/2013.
forfiles /p c:\windows\ /d +17/08/2013
Deletar os arquivos que foram modificados nos últimos 7 dias, na pasta atual de trabalho.
forfiles /D +7 "cmd /C del @file"
Lista arquivos com -100 dias de da ultima modificação mostrando nome do arquivo, tamanho e data da ultima modificação
forfiles -p "d:\temp" /d -100 /c "cmd /c echo @file @fsize @fdate"
E pronto! Agora é só você criar uma tarefa agendada para rodar o comando acima uma vez por semana.
Se sua cópia do Windows não tem o Forfiles, você pode baixá-lo a partir do servidor FTP da Microsoft aqui:
ftp://ftp.microsoft.com/ResKit/y2kfix/x86/
Estou realmente impressionado com este pequeno utilitário e as suas infinitas possibilidades.
fonte: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/forfiles
créditos: https://onofabio.wordpress.com/2016/06/24/forfiles-excluir-arquivos-com-mais-de-x-dias-de-idade/