Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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ório Representa um parâmetro substituível. Use um único sinal de porcentagem (% ) para executar o comando for no prompt de comando. Use sinais de porcentagem dupla (%% ) para executar o comando for em um arquivo em lotes. As variáveis diferenciam maiúsculas de 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 no qual executar o comando. Os parênteses são obrigató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 todas as opções de linha de comando que você deseja usar com o comando especificado. |
/? | Exibe ajuda no prompt de comando. |
Observações
Você pode usar esse comando dentro de um arquivo em lotes ou diretamente do prompt de comando.
Os seguintes atributos se aplicam ao comando for :
Este comando substitui
% variable
ou%% variable
por cada cadeia de texto no conjunto especificado até que o comando especificado processe todos os arquivos.Os nomes das variáveis diferenciam maiúsculas de minúsculas, globais e não mais de 52 podem estar ativos de cada vez.
Para evitar confusão com os parâmetros do lote, através
%0
do , você pode usar qualquer caractere para%9
, exceto os algarismos de 0 a 9. Para arquivos em lote simples, um único caractere funcionará%%f
.Você pode usar vários valores para variáveis em arquivos em 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. A seguir estão os 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
% variable
ou%% variable
e, em seguida, o comando especificado processa esse valor. Isso continua até que todos os arquivos (ou grupos de arquivos) que correspondem ao valor definido sejam processados.In e do 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 estiverem habilitadas (que é o padrão), as seguintes formas adicionais de for serão suportadas:
Apenas 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 corresponda ao set. A sintaxe é:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Recursivo: Percorre a árvore de diretórios enraizada em drive:path 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 enumerará apenas a árvore de diretórios. A sintaxe é:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Iteração de um intervalo de valores: Use uma variável iterativa para definir o valor inicial (start#) e, em seguida, percorra um intervalo definido de valores até que o valor exceda o valor final definido (end#). /l executa 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 percorrer 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 é:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
Iteração e análise de ficheiros: Use a análise de arquivos para processar a saída do comando, cadeias de caracteres e conteúdo do arquivo. Use variáveis iterativas para definir o conteúdo ou cadeias de caracteres que você deseja examinar e use as várias opções de 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. Quando usado sem a opção de token, /f examinará apenas o primeiro token.
A análise de arquivos consiste em ler a saída, a cadeia de caracteres ou o conteúdo do arquivo e, em seguida, dividi-lo em linhas individuais de texto e analisar cada linha em zero ou mais tokens. O loop for é então chamado com o valor da variável iterativa definido para 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> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]
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. Esta é 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> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]
A tabela a seguir lista as palavras-chave de análise que você pode usar para parsingkeywords.
Palavra-chave Descrição EOL= <c>
Especifica um caractere de fim de linha (apenas um caractere). pular= <n>
Especifica o número de linhas a serem ignoradas no início do arquivo. delims= <xxx>
Especifica um conjunto de delimitadores. Isso substitui o conjunto delimitador padrão de espaço e guia. fichas= <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 mth até o nth tokens. Se o último caractere na string tokens= for um asterisco (*), uma variável adicional será alocada e ela receberá o texto restante na linha após o último token analisado. UseBackQ Especifica para executar uma cadeia de caracteres entre aspas como um comando, usar uma cadeia de aspas simples como uma cadeia de caracteres literal ou, para nomes de arquivo longos que contenham espaços, permitir que nomes de arquivo em <set>
, sejam colocados entre aspas duplas.Substituição variável: A tabela a seguir lista a sintaxe opcional (para qualquer variável I):
Variável com modificador Descrição %~I
Expande o que remove todas as %I
aspas circundantes.%~fI
Expande para um nome de %I
caminho totalmente qualificado.%~dI
Expande apenas para uma letra de %I
unidade.%~pI
Expande %I
apenas para um caminho.%~nI
Expande apenas para um nome de %I
arquivo.%~xI
Expande apenas para uma extensão de nome de %I
arquivo.%~sI
Expande o caminho para conter apenas nomes curtos. %~aI
Expande %I
para os atributos de arquivo de arquivo.%~tI
Expande %I
para a data e hora do arquivo.%~zI
Expande %I
para o tamanho do arquivo.%~$PATH:I
Pesquisa os diretórios %I
listados na variável de ambiente PATH e expande para o nome totalmente qualificado do primeiro diretório encontrado. Se o nome da variável de ambiente não estiver definido ou o arquivo não for encontrado pela pesquisa, esse modificador se expandirá para a cadeia de caracteres vazia.A tabela a seguir lista as combinações de modificadores que você pode usar para obter resultados compostos.
Variável com modificadores combinados Descrição %~dpI
Expande apenas para uma letra de %I
unidade e um caminho.%~nxI
Expande apenas para um nome de %I
arquivo e extensão.%~fsI
Expande para um nome de %I
caminho completo apenas com nomes curtos.%~dp$PATH:I
Pesquisa os diretórios listados na variável %I
de ambiente PATH e expande para a letra da unidade e o caminho do primeiro encontrado.%~ftzaI
Expande para uma linha de %I
saída que é como dir.Nos exemplos acima, você pode substituir
%I
e PATH por outros valores válidos. Um válido para o nome da variável termina a %~ sintaxe.Usando nomes de variáveis 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
for /f
lógica de análise em uma cadeia de caracteres imediata embrulhando<literalstring>
: aspas duplas (sem usebackq) ou entre aspas simples (com usebackq) --por exemplo, (MyString) ou ('MyString').<literalstring>
é tratada como uma única linha de entrada de um arquivo. Ao analisar<literalstring>
entre aspas duplas, símbolos de comando como (\ & | > < ^
) são tratados como caracteres comuns.Saída de análise: Você pode usar o
for /f
comando para analisar a saída de um comando colocando uma citação entre<command>
parênteses. É tratada como uma linha de comando, que é passada para uma criança Cmd.exe. A saída é capturada na memória e analisada como se fosse um arquivo.
Exemplos
Para usar 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 cada ocorrência de %f por %%f. Caso contrário, a variável será ignorada e uma mensagem de erro será exibida.
Para analisar um arquivo, ignorando as 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 terceiro token de cada linha para o corpo for (os tokens são delimitados por vírgulas ou espaços). O corpo das referências de instrução for%i obter o segundo token, %j obter o terceiro token e %k obter todos os tokens restantes. Se os nomes de arquivo fornecidos contiverem espaços, use aspas ao redor do texto (por exemplo, Nome do arquivo). Para usar aspas, você deve usar usebackq. Caso contrário, as aspas são interpretadas como definindo uma cadeia de caracteres literal a ser analisada.
%i é explicitamente declarado na declaração for . %j e %k são declarados implicitamente usando tokens=. Você pode usar tokens= para especificar até 26 tokens, se isso não causar uma tentativa de declarar uma variável maior do que a letra z ou Z.
Para analisar a saída de um comando colocando o conjunto entre parênteses, digite:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Para executar um loop recursivo de todos os arquivos em um diretório, incluindo subdiretórios e ecoar seu caminho completo, quando foram modificados pela última vez, e seu tamanho de arquivo, digite:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA