forfiles

Seleciona e executa um comando em um arquivo ou conjunto de arquivos. Esse comando é mais comumente usado em arquivos em lote.

Sintaxe

forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]

Parâmetros

Parâmetro Descrição
/P <pathname> Especifica o caminho do qual iniciar a pesquisa. Por padrão, a pesquisa começa no diretório de trabalho atual.
/M <searchmask> Pesquisa arquivos de acordo com a máscara de pesquisa especificada. A máscara de pesquisa padrão é *.
/S Instrui o comando forfiles a pesquisar em subdiretórios recursivamente.
/C <command> Executa o comando especificado em cada arquivo. As cadeias de caracteres de comando devem ser encapsuladas entre aspas duplas. O comando padrão é "cmd /c echo @file".
/D [{+\|-}][{<date> | <days>}] Seleciona arquivos com uma data da última modificação dentro do período de tempo especificado:
  • Seleciona arquivos com uma data da última modificação posterior ou igual a (+) ou anterior ou igual a (-) a data especificada, em que date está no formato MM/DD/AAAA.
  • Seleciona arquivos com uma data da última modificação posterior ou igual (+) à data atual mais o número de dias especificado ou anterior ou igual (-) à data atual menos o número de dias especificado.
  • Os valores válidos para dias incluem qualquer número no intervalo de 0 a 32.768. Se nenhum sinal for especificado, + será usado por padrão.
/? Exibe o texto de ajuda na janela cmd.

Comentários

  • O comando forfiles /S é semelhante a dir /S.

  • Você pode usar as seguintes variáveis na cadeia de caracteres de comando, conforme especificado pela opção de linha de comando /C:

    Variável Descrição
    @FILE Nome do arquivo.
    @FNAME Nome do arquivo sem extensão.
    @EXT Extensão de nome de arquivo.
    @PATH Caminho completo do arquivo.
    @RELPATH Caminho relativo do arquivo.
    @ISDIR Avaliará como TRUE se um tipo de arquivo for um diretório. Caso contrário, essa variável será avaliada como FALSE.
    @FSIZE Tamanho do arquivo, em bytes.
    @FDATE Carimbo de data da última modificação no arquivo.
    @FTIME Carimbo de data/hora da última modificação no arquivo.
  • O comando forfiles permite executar um comando em ou passar argumentos para vários arquivos. Por exemplo, você pode executar o comando type em todos os arquivos em uma árvore com a extensão de nome de arquivo .txt. Você também pode executar cada arquivo em lote (*.bat) na unidade C, com o nome do arquivo Myinput.txt como o primeiro argumento.

  • Esse comando pode:

    • Selecione arquivos por uma data absoluta ou uma data relativa usando o parâmetro /d.

    • Crie uma árvore de arquivos usando variáveis como @FSIZE e @FDATE.

    • Diferencie arquivos de diretórios usando a variável @ISDIR.

    • Inclua caracteres especiais na linha de comando usando o código hexadecimal para o caractere, no formato 0xHH (por exemplo, 0x09 para uma guia).

  • Esse comando funciona implementando o sinalizador recurse subdirectories em ferramentas projetadas para processar apenas um único arquivo.

Exemplos

Para listar todos os arquivos em lote na unidade C, digite:

forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"

Para listar todos os diretórios na unidade C, digite:

forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"

Para listar todos os arquivos no diretório atual com pelo menos um ano de idade, digite:

forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."

Para mostrar que o arquivo de texto está desatualizado para cada um dos arquivos no diretório atual anterior a 1º de janeiro de 2007, digite:

forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."

Para listar as extensões de nome de arquivo de todos os arquivos no diretório atual no formato de coluna e adicionar uma guia antes da extensão, digite:

forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"