para

Executa um comando especificado para cada arquivo, dentro de um conjunto de arquivos.

Sintaxe

for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]

Parâmetros

Parâmetro Descrição
{%% | %}<variable> Obrigatórios. Representa um parâmetro substituível. Use um sinal de porcentagem única ( % ) para executar o comando % no prompt de comando. Use sinais de porcentagem dupla ( %% ) para executar o comando %% em um arquivo em lotes. As variáveis são sensíveis a minúsculas e devem ser representadas com um valor alfabético, como %a, %bou %c.
(<set>) Obrigatório. Especifica um ou mais arquivos, diretórios ou cadeias de caracteres de texto ou um intervalo de valores nos quais executar o comando. Os parênteses são necessários.
<command> Obrigatório. Especifica o comando que você deseja executar em cada arquivo, diretório ou cadeia de caracteres de texto ou no intervalo de valores incluídos no conjunto.
<commandlineoptions> Especifica as opções de linha de comando que você deseja usar com o comando especificado.
/? Exibe a ajuda no prompt de comando.

Comentários

  • Você pode usar esse comando em um arquivo em lotes ou diretamente no prompt de comando.

  • Os seguintes atributos se aplicam ao comando for:

    • Esse comando substitui ou por cada cadeia de caracteres de texto no conjunto especificado até % variable que o comando especificado %% variable processe todos os arquivos.

    • Os nomes de variáveis são sensíveis a minúsculas, globais e não mais de 52 podem estar ativos por vez.

    • Para evitar confusão com os parâmetros de lote, por meio de , você pode usar qualquer caractere para variável, exceto os %0%9 numerais %9 a 9. %0 Para arquivos em lotes simples, um único caractere como %%f funcionará.

    • Você pode usar vários valores para variável em arquivos de lote complexos para distinguir diferentes variáveis substituíveis.

  • O parâmetro set pode representar um único grupo de arquivos ou vários grupos de arquivos. Você pode usar caracteres curinga ( * e *) para especificar um conjunto de arquivos. Veja a seguir conjuntos de arquivos válidos:

    (*.doc)
    (*.doc *.txt *.me)
    (jan*.doc jan*.rpt feb*.doc feb*.rpt)
    (ar??1991.* ap??1991.*)
    
  • Quando você usa esse comando, o primeiro valor em set substitui ou e, em seguida, o comando especificado %% variable processa esse valor. Isso continuará até que todos os arquivos (ou grupos de arquivos) que correspondem ao valor definido sejam processados.

  • No e no não são parâmetros, mas você deve usá-los com este comando. Se você omitir qualquer uma dessas palavras-chave, uma mensagem de erro será exibida.

  • Se as extensões de comando estão habilitadas (que é o padrão), há suporte para as seguintes formas adicionais de para:

    • Somente diretórios: Se set contiver caracteres curinga ( ou ?), o comando especificado será executado para cada diretório (em vez de um conjunto de arquivos em um diretório especificado) que corresponde ao conjunto. A sintaxe do é:

      for /d {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
      
    • Recursiva: Percorre a árvore de diretório que tem raiz na unidade:caminho e executa a instrução for em cada diretório da árvore. Se nenhum diretório for especificado após /r, o diretório atual será usado como o diretório raiz. Se set for apenas um único ponto (.), ele enumera apenas a árvore de diretórios. A sintaxe do é:

      for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      
    • Iterando um intervalo de valores: Use uma variável iterativa para definir o valor inicial (start#) e, em seguida, passar por um intervalo definido de valores até que o valor exceda o valor final definido (end#). /l executará o iterativo comparando start# com end#. Se start# for menor que end# o comando será executado. Quando a variável iterativa excede end#, o shell de comando sai do loop. Você também pode usar uma etapa negativa# para passar por um intervalo em valores decrescentes. Por exemplo, (1,1,5) gera a sequência 1 2 3 4 5 e (5,-1,1) gera a sequência 5 4 3 2 1. A sintaxe do é:

      for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlinepptions>]
      
    • Iteração e análise de arquivo: Use a análise de arquivo para processar a saída do comando, as cadeias de caracteres e o conteúdo do arquivo. Use variáveis iterativas para definir o conteúdo ou as cadeias de caracteres que você deseja examinar e use as várias opções parsingkeywords para modificar ainda mais a análise. Use a opção de token parsingkeywords para especificar quais tokens devem ser passados como variáveis iterativas. Observe que, quando usado sem a opção de token, /f examinará apenas o primeiro token.

      A análise de arquivo consiste em ler a saída, a cadeia de caracteres ou o conteúdo do arquivo e, em seguida, desmá-lo em linhas individuais de texto e analisar cada linha em zero ou mais tokens. O loop for é chamado com o valor da variável iterativa definido como o token. Por padrão, /f passa o primeiro token separado em branco de cada linha de cada arquivo. As linhas em branco são ignoradas.

      As sintaxes são:

      for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlinepptions>]
      

      O argumento set especifica um ou mais nomes de arquivo. Cada arquivo é aberto, lido e processado antes de passar para o próximo arquivo no conjunto. Para substituir o comportamento de análise padrão, especifique parsingkeywords. Essa é uma cadeia de caracteres entre aspas que contém uma ou mais palavras-chave para especificar diferentes opções de análise.

      Se você usar a opção usebackq, use uma das seguintes sintaxes:

      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<Set>) do <command> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<LiteralString>') do <command> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlinepptions>]
      

      A tabela a seguir lista as palavras-chave de análise que você pode usar para analisar palavras-chave.

      Palavra-chave Descrição
      eol=<c> Especifica um caractere de fim de linha (apenas um caractere).
      skip=<n> Especifica o número de linhas a ignorar no início do arquivo.
      delims=<xxx> Especifica um conjunto delimidores. Isso substitui o conjunto de separador padrão de espaço e tabulação.
      tokens=<x,y,m–n> Especifica quais tokens de cada linha devem ser passados para o loop for para cada iteração. Como resultado, nomes de variáveis adicionais são alocados. m-n especifica um intervalo, do maté o de tokens. Se o último caractere na cadeia de caracteres tokens= for um asterisco ( ), uma variável adicional será alocada e receberá o texto restante na linha após o último token analisado.
      usebackq Especifica executar uma cadeia de caracteres entre aspas inclusas como um comando, usar uma cadeia de caracteres entre aspas simples como uma cadeia de caracteres literal ou, para nomes de arquivo longos que contêm espaços, permitir nomes de arquivo em , para cada um ser entre aspas <set> duplas.
    • Substituição de variável: A tabela a seguir lista a sintaxe opcional (para qualquer variável I):

      Variável com modificador Descrição
      %~I Expande %I o que remove as aspas ao redor.
      %~fI Expande %I para um nome de caminho totalmente qualificado.
      %~dI Expande %I para apenas uma letra da unidade.
      %~pI Expande %I para apenas um caminho.
      %~nI Expande %I para apenas um nome de arquivo.
      %~xI Expande %I para uma extensão de nome de arquivo somente.
      %~sI Expande o caminho para conter apenas nomes curtos.
      %~aI Expande %I para os atributos de arquivo do arquivo.
      %~tI Expande %I para a data e a hora do arquivo.
      %~zI Expande %I para o tamanho do arquivo.
      %~$PATH:I Pesquisa os diretórios listados na variável de ambiente PATH e expande para o nome totalmente %I qualificado do primeiro diretório encontrado. Se o nome da variável de ambiente não estiver definido ou se o arquivo não for encontrado pela pesquisa, esse modificador expandirá para a cadeia de caracteres vazia.

      A tabela a seguir lista combinações de modificador que você pode usar para obter resultados compostos.

      Variável com modificadores combinados Descrição
      %~dpI Expande %I para apenas uma letra da unidade e caminho.
      %~nxI Expande %I apenas para um nome de arquivo e extensão.
      %~fsI Expande %I para um nome de caminho completo apenas com nomes curtos.
      %~dp$PATH:I Pesquisa os diretórios listados na variável de ambiente PATH para %I e expande para a letra da unidade e o caminho do primeiro encontrado.
      %~ftzaI Expande %I para uma linha de saída que é como %I.

      Nos exemplos acima, você pode substituir %I e DEmarcar por outros valores válidos. Um válido para nome de variável termina a sintaxe.

      Usando nomes de variáveis em maiúsculas, como %I , você pode tornar seu código mais legível e evitar confusão com os modificadores, que não diferenciam maiúsculas de minúsculas.

  • Analisando uma cadeia de caracteres: Você pode usar a lógica de análise em uma cadeia de caracteres imediata encapsulando <literalstring> : aspas duplas (<literalstring> usebackq) ou entre aspas simples (com usebackq) – por exemplo, (MyString) ou (' MyString '). <literalstring> é tratado como uma única linha de entrada de um arquivo. Durante a análise <literalstring> em aspas duplas, os símbolos de comando (como, \ & | > < ^ ) são tratados como caracteres comuns.

  • Saída de análise: Você pode usar o comando para analisar a saída de um comando, colocando entre parênteses um back-quot <command> . Ele é tratado como uma linha de comando, que é passada para um Cmd.exe filho. A saída é capturada na memória e analisada como se fosse um arquivo.

Exemplos

Para usar o para o em um arquivo em lotes, use a seguinte sintaxe:

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Para exibir o conteúdo de todos os arquivos no diretório atual que têm a extensão .doc ou .txt usando a variável substituível % f, digite:

for %f in (*.doc *.txt) do type %f

No exemplo anterior, cada arquivo que tem a extensão .doc ou .txt no diretório atual é substituído pela variável % f até que o conteúdo de cada arquivo seja exibido. Para usar esse comando em um arquivo em lotes, substitua todas as ocorrências de % f por %% f. Caso contrário, a variável será ignorada e uma mensagem de erro será exibida.

Para analisar um arquivo, ignorando linhas comentadas, digite:

for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k

Este comando analisa cada linha em myfile.txt. Ele ignora as linhas que começam com um ponto e vírgula e passa o segundo e o terceiro token de cada linha para o corpo de para (os tokens são delimitados por vírgulas ou espaços). O corpo da instrução for faz referência a % i para obter o segundo token, % j para obter o terceiro token e % k para obter todos os tokens restantes. Se os nomes de arquivo fornecidos contiverem espaços, use aspas em volta do texto (por exemplo, nome de arquivo). Para usar aspas, você deve usar usebackq. Caso contrário, as aspas são interpretadas como definição de uma cadeia de caracteres literal para análise.

% i é declarado explicitamente na instrução for . % j e % k são declarados implicitamente usando tokens =. Você pode usar tokens = para especificar até 26 tokens, desde que ele não cause uma tentativa de declarar uma variável maior que a letra Z ou z.

Para analisar a saída de um comando colocando definido entre parênteses, digite:

for /f usebackq delims== %i in ('set') do @echo %i

Referências adicionais