Ferramentas de Linha de Comando

Comando For


( Retorna à Lista completa de comandos Shell )

Comando For


Executa um determinado comando para cada arquivo em um conjunto de arquivos.

Sintaxe
for {%variável|%%variável} in (conjunto) do comando [opções_da_linha_de_comando]

Parâmetros
{%variável|%%variável}
Obrigatório. Representa um parâmetro substituível. Utilize %variável para executar for a partir do prompt de comando. Utilize %%variável para executar o comando for dentro de um arquivo em lotes. As variáveis diferenciam maiúsculas de minúsculas e devem ser representadas com um valor alfabético, como %A, %B ou %C.
(conjunto)
Obrigatório. Especifica um ou mais arquivos, pastas, intervalo de valores ou seqüências de texto a serem processados com o comando especificado. Os parênteses são obrigatórios.
comando
Obrigatório. Especifica o comando a ser executado em cada arquivo, pasta, intervalo de valores ou seqüência de texto incluído no (conjunto) especificado.
opções_da_linha_de_comando
Especifica quaisquer opções da linha de comando a serem utilizadas com o comando especificado.
/?
Exibe ajuda no prompt de comando.
Comentários
Usando for
O comando for pode ser utilizado dentro de um arquivo em lotes ou diretamente no prompt de comando.

Usando parâmetros em lote
Os seguintes atributos se aplicam ao comando for:

O comando for substitui %variável ou %%variável por cada seqüência de texto no conjunto especificado até o comando processar todos os arquivos.
Os nomes das variáveis de for são globais, diferenciam maiúsculas de minúsculas e apenas 52 podem estar ativas simultaneamente.
Para evitar confusão com os parâmetros em lote de %0 a %9, qualquer caractere pode ser utilizado para variável, exceto os algarismos de 0 a 9. Para arquivos em lote simples, basta um único caractere, como %%f.
Você pode utilizar vários valores para variável em arquivos em lote complexos a fim de distinguir diferentes variáveis substituíveis.
Especificando um grupo de arquivos
O parâmetro conjunto pode representar um único grupo de arquivos ou vários grupos de arquivos. Podem ser utilizados curingas, isto é, * e ? para especificar um conjunto de arquivos. São válidos os seguintes conjuntos de arquivos:

(*.doc)

(*.doc *.txt *.me)

(jan*.doc jan*.rpt feb*.doc feb*.rpt)

(ar??1991.* ap??1991.*)

Quando você usa o comando for, o primeiro valor do conjunto substitui %variável ou %%variável e, então, o comando especificado processa esse valor. Esse procedimento continua até que todos os arquivos (ou grupos de arquivos) que correspondam ao valor do conjunto sejam processados.

Usando as palavras-chave in e do
In e do não são parâmetros, mas devem ser usadas com for. Se alguma dessas palavras-chave for omitida, será exibida uma mensagem de erro.

Usando formas adicionais de for
Se as extensões de comando estiverem ativadas (o padrão), haverá suporte para as seguintes formas adicionais do comando for:

Somente pastas
Se conjunto contiver curingas (* e ?), o comando especificado será executado para cada pasta (em vez de um conjunto de arquivos em uma pasta especificada) que corresponda ao conjunto. A sintaxe é:

for /D {%% | %}variável in (conjunto) do comando [opções_da_linha_de_comando]

Recursiva
Percorre a árvore de pasta com raiz em [unidade:]caminho, executando a instrução for em cada pasta da árvore. Se nenhuma pasta for especificada após /R, a pasta atual será usada. Se conjunto for somente um ponto (.), ele apenas enumerará a árvore de pastas. A sintaxe é:

for /R [[unidade :]caminho] {%% | %}variável in (conjunto) do comando [opções_da_linha_de_comando]

Iterando um intervalo de valores
Utilize uma variável iterativa para definir o valor inicial (início) e, depois, avançar por um intervalo definido de valores até que o valor exceda o valor final definido (fim). /L executa a iteratividade comparando início com fim. Se início for menor que fim o comando será executado. Quando a variável iterativa excede o fim, o shell do comando sai do loop. Você também pode usar uma etapa negativa para avançar por um intervalo em valores decrescentes. Por exemplo, (1,1,5) gera a seqüência 1 2 3 4 5 e (5,-1,1) gera a seqüência (5 4 3 2 1). A sintaxe é:

for /L {%% | %}variável in (início,etapa,fim) do comando [opções_da_linha_de_comando]

Iterando e analisando arquivos
Utilize a análise de arquivos para processar saída de comando, seqüências de caracteres e conteúdo de arquivos. Use as variáveis iterativas para definir o conteúdo ou as seqüências de caracteres que deseja examinar e use as várias opções de palavras-chave_de_análise para modificar mais ainda a análise. Use a opção de símbolo das palavras-chave_de_análise para especificar quais símbolos devem ser passados como variáveis do iterador. Observe que, quando usado sem a opção de símbolo, /F examinará apenas o primeiro símbolo.

A análise de arquivo consiste na leitura da saída, seqüência de caracteres ou conteúdo do arquivo, dividindo-o em linhas individuais de texto e, em seguida, analisando cada linha em zero ou mais símbolos. O loop de for é então chamado com o valor de variável do iterador definido para o símbolo. Por padrão, /F passa o primeiro símbolo separado por espaço a partir de cada linha de cada arquivo. As linhas em branco são ignoradas. As diversas sintaxes são:

for /F ["palavras-chave_de_análise"] {%% | %}variável in (conjunto_de_arquivos) do comando [opções_da_linha_de_comando]

for /F ["palavras-chave_de_análise"] {%% | %}variável in ("seqüência_literal") do comando [opções_da_linha_de_comando]

for /F ["palavras-chave_de_análise"] {%% | %}variável in ('comando') do comando [opções_da_linha_de_comando]

O argumento conjunto_de_arquivos especifica um ou mais nomes de arquivo. Cada arquivo será aberto, lido e processado antes de ir para o próximo arquivo do conjunto_de_arquivos. Para ignorar o comportamento de análise padrão, especifique "palavras-chave_de_análise". Essa é uma seqüência 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, utilize uma das seguintes sintaxes:

for /F ["usebackqpalavras-chave_de_análise"] {%% | %}variável in ("conjunto_de_arquivos") do comando [opções_da_linha_de_comando]

for /F ["usebackqpalavras-chave_de_análise"] {%% | %}variável in ('seqüência_literal') do comando [opções_da_linha_de_comando]

for /F ["usebackqpalavras-chave_de_análise"] {%% | %}variável in (`comando`) do comando [opções_da_linha_de_comando]

A tabela abaixo lista as palavras-chave de análise que podem ser usadas para palavras-chave_de_análise.

Palavra-chave Descrição
eol=c Especifica um caractere de fim de linha (apenas um caractere).
skip=n Especifica o número de linhas que devem ser ignoradas no início de cada arquivo.
delims=xxx Especifica um conjunto delimitador. Isso substitui o conjunto delimitador padrão de espaço e tabulação.
tokens=x,y,m-n Especifica quais símbolos de cada linha deverão ser passados para o corpo de for para cada iteração. Como resultado, são alocados nomes de variáveis adicionais. A forma m-n é um intervalo, especificando o mésimo até o nésimo símbolo. Se o último caractere na seqüência tokens= for um asterisco (*), uma variável adicional será alocada e receberá o texto restante na linha após o último símbolo analisado.
usebackq Especifica que aspas podem ser usadas para citar nomes de arquivos em conjunto_de_arquivos, uma seqüência de caracteres entre aspas é executada como um comando e uma seqüência de caracteres entre aspas simples é um comando de seqüência literal.

Substituição de variável
Os modificadores de substituição para referências das variáveis de for foram aprimorados. A tabela abaixo lista sintaxe opcional (para qualquer variável I):

Variável com modificador Descrição
%~I Expande %I que remove as aspas delimitadoras ("").
%~fI Expande %I para um nome de caminho totalmente qualificado.
%~dI Expande %I para somente uma letra de unidade.
%~pI Expande %I para somente um caminho.
%~nI Expande %I para somente um nome de arquivo.
%~xI Expande %I para somente uma extensão de arquivo.
%~sI Expande o caminho para conter somente nomes curtos.
%~aI Expande %I para os atributos do arquivo.
%~tI Expande %I para a data e hora do arquivo.
%~zI Expande %I para o tamanho do arquivo
%~$PATH:I Pesquisa as pastas listadas na variável de ambiente PATH e expande %I para o nome totalmente qualificado do primeiro nome encontrado. Se o nome da variável de ambiente não estiver definido ou o arquivo não for localizado pela pesquisa, esse modificador será expandido para a seqüência vazia.

A tabela abaixo lista as combinações de modificadores que podem ser usadas para obter resultados compostos.

Variável com modificadores combinados Descrição
%~dpI Expande %I para somente uma letra de unidade e um caminho.
%~nxI Expande %I para somente um nome de arquivo e extensão.
%~fsI Expande %I para um nome de caminho completo somente com nomes curtos.
%~dp$PATH:I Pesquisa as pastas listadas na variável de ambiente PATH %I e expande para a letra de unidade e para o caminho do primeiro nome encontrado.
%~ftzaI Expande %I para uma linha de saída semelhante a dir.

Nos exemplos acima, %I e PATH podem ser substituídos por outros valores válidos. Um nome de variável for válido finaliza a sintaxe %~.

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

Analisando uma seqüência de caracteres
Você pode usar a lógica de análise for /F em uma seqüência de caracteres imediata, delimitando o conjunto_de_arquivos por aspas simples, dentro dos parênteses. O conjunto_de_arquivos será tratado como uma única linha de entrada de um arquivo e será analisado.

Analisando saída
Você pode usar o comando for /F para analisar a saída de um comando tornando o conjunto_de_arquivos entre parênteses uma seqüência de caracteres delimitada por aspas. Ele será tratado como uma linha de comando, que será passada para um Cmd.exe filho e a saída será capturada na memória e analisada como se fosse um arquivo.

Exemplos
Para usar for em um arquivo em lotes, utilize a seguinte sintaxe:

for %%variável in (conjunto) do comando [opções_da_linha_de_comando]

Para exibir o conteúdo de todos os arquivos da pasta atual que tenham a extensão .doc ou .txt usando a variável substituível %f, digite:

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

Nesse exemplo, cada arquivo que tenha a extensão .doc ou .txt na pasta atual é substituído pela variável %f até o conteúdo de todos os arquivos ser exibido. Para usar este 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 (meuarq.txt) do @echo %i %j %k

Esse comando analisa cada linha de meuarq.txt, ignorando linhas que comecem com um ponto-e-vírgula, passando o segundo e terceiro símbolo de cada linha para o corpo de FOR (os símbolos são delimitados por vírgulas ou espaços). O corpo da instrução FOR faz referência a %i para obter o segundo símbolo, %j para obter o terceiro símbolo e %k para obter todos os símbolos restantes. Se os nomes de arquivo fornecidos contiverem espaços, delimite o texto por aspas (por exemplo, "nome do arquivo"). Para usar aspas, você deve usar usebackq. Caso contrário, as aspas serão interpretadas como definidoras de uma seqüência de caracteres literal a ser analisada.

%i é explicitamente declarado na instrução FOR, e %j e %k são implicitamente declarados usando tokens=. Você pode especificar até 26 símbolos usando tokens=, contanto que não provoque uma tentativa de declarar uma variável maior que a letra 'z' ou 'Z'.

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

for /F "usebackq delims==" %i IN (`conjunto`) DO @echo %i
Esse exemplo enumera os nomes de variáveis de ambiente no ambiente atual.

Sistemas Operacionais | Linux Comandos | Linux Shell Script | Atalhos do Office | Literatura e Leitura | Principais Autores | História da Literatura |


Formatando legenda
FormatoSignificado
Itálico Informações que o usuário deve fornecer
Negrito Elementos que o usuário deve digitar exatamente como mostrado
Reticências (...) Parâmetro que pode ser repetido várias vezes em uma linha de comando
Entre colchetes ([]) Itens opcionais
Entre chaves ({});opções separadas por barra vertical (|).Exemplo: {even|odd}Conjunto de opções entre as quais o usuário deve escolher apenas uma
Fonte Courier Código ou resultado de um programa


Envie seu comentário:
Nome:

E-mail:

Comentário:


Fonte: •Manual do Windows XP • ( Literatura e Leitura ) • ( Dicas sobre Sistemas Operacionais ) • ( Retorna à Lista completa de comandos Shell ) •