Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ejecuta un comando especificado para cada archivo, dentro de un conjunto de archivos.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Parameters
| Parameter | Description |
|---|---|
{%% \| %}<variable> |
Required. Representa un parámetro reemplazable. Utilice un solo signo de porcentaje (%) para llevar a cabo el comando for en el símbolo del sistema. Utilice los signos de doble porcentaje (%%) para llevar a cabo el comando for dentro de un archivo por lotes. Las variables distinguen entre mayúsculas y minúsculas y deben representarse con un valor alfabético como %a, %bo %c. |
(<set>) |
Required. Especifica uno o varios archivos, directorios o cadenas de texto, o un intervalo de valores en los que ejecutar el comando. Se requieren paréntesis. |
<command> |
Required. Especifica el comando que desea llevar a cabo en cada archivo, directorio o cadena de texto, o en el rango de valores incluidos en el conjunto. |
<commandlineoptions> |
Especifica las opciones de línea de comandos que quiera usar con el comando especificado. |
| /? | Muestra la ayuda en el símbolo del sistema. |
Remarks
Puede usar este comando dentro de un archivo por lotes o directamente desde el símbolo del sistema.
Los siguientes atributos se aplican al comando for :
Este comando reemplaza
% variableo%% variablepor cada cadena de texto del conjunto especificado hasta que el comando especificado procesa todos los archivos.Los nombres de variables distinguen mayúsculas de minúsculas, globales y no se pueden activar más de 52 a la vez.
Para evitar confusiones con los parámetros de lote,
%0a través de%9, puede usar cualquier carácter para la variable excepto los números del 0 al 9. En el caso de archivos por lotes simples, un solo carácter como%%ffuncionará.Puede utilizar varios valores para variables en archivos por lotes complejos para distinguir diferentes variables reemplazables.
El parámetro set puede representar un solo grupo de archivos o varios grupos de archivos. Puede usar caracteres comodín (* y ?) para especificar un conjunto de archivos. A continuación se muestran conjuntos de archivos válidos:
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)Cuando se utiliza este comando, el primer valor del conjunto reemplaza a
% variableor%% variabley, a continuación, el comando especificado procesa este valor. Esto continúa hasta que se procesan todos los archivos (o grupos de archivos) que corresponden al valor establecido .In y do no son parámetros, pero debe usarlos con este comando. Si omite cualquiera de estas palabras clave, aparece un mensaje de error.
Si las extensiones de comando están habilitadas (ese es el valor predeterminado), se admiten las siguientes formas adicionales de for :
Solo directorios: Si set contiene caracteres comodín (* o ?), el comando especificado se ejecuta para cada directorio (en lugar de un conjunto de archivos en un directorio especificado) que coincida con set. La sintaxis es:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Recursivo: Recorre el árbol de directorios que tiene sus raíces en drive:path y ejecuta la instrucción for en cada directorio del árbol. Si no se especifica ningún directorio después de /r, el directorio actual se utiliza como directorio raíz. Si set es solo un punto (.), solo enumera el árbol de directorios. La sintaxis es:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Iteración de un intervalo de valores: Use una variable iterativa para establecer el valor inicial (start#) y, a continuación, recorra un intervalo establecido de valores hasta que el valor supere el valor final establecido (end#). /l ejecuta la iteración comparando start# con end#. Si start# es menor que end#, se ejecuta el comando. Cuando la variable iterativa supera end#, el shell de comandos sale del bucle. También puede usar un paso negativo # para recorrer un rango en valores decrecientes. Por ejemplo, (1,1,5) genera la secuencia 1 2 3 4 5 y (5,-1,1) genera la secuencia 5 4 3 2 1. La sintaxis es:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]Iteración y análisis de archivos: Use el análisis de archivos para procesar la salida de comandos, las cadenas y el contenido del archivo. Use variables iterativas para definir el contenido o las cadenas que desea examinar y use las distintas opciones de parsingkeywords para modificar aún más el análisis. Utilice la opción de token parsingkeywords para especificar qué tokens se deben pasar como variables iterativas. Cuando se usa sin la opción token, /f solo examinará el primer token.
El análisis de archivos consta de leer la salida, la cadena o el contenido del archivo y, a continuación, dividirlo en líneas individuales de texto y analizar cada línea en cero o más tokens. A continuación, se llama al bucle for con el valor de la variable iterativa establecido en el token. De forma predeterminada, /f pasa el primer token separado en blanco de cada línea de cada archivo. Se omiten las líneas en blanco.
Las sintaxis son:
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>]El argumento set especifica uno o varios nombres de archivo. Cada archivo se abre, lee y procesa antes de pasar al siguiente archivo del conjunto. Para anular el comportamiento de análisis predeterminado, especifique parsingkeywords. Se trata de una cadena entre comillas que contiene una o varias palabras clave para especificar diferentes opciones de análisis.
Si usa la opción usebackq , use una de las siguientes sintaxis:
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>]En la tabla siguiente se enumeran las palabras clave de análisis que puede utilizar para analizar palabras clave.
Keyword Description eol= <c>Especifica un final de carácter de línea (solo un carácter). skip= <n>Especifica el número de líneas que se omitirán al principio del archivo. delims= <xxx>Especifica un conjunto de delimitadores. Esto reemplaza el conjunto de delimitador predeterminado de espacio y pestaña. tokens= <x,y,m-n>Especifica qué tokens de cada línea se van a pasar al bucle for para cada iteración. Como resultado, se asignan nombres de variable adicionales. m-n especifica un rango, desde el mésimo hasta el nésimo token. Si el último carácter de la cadena tokens= es un asterisco (*), se asigna una variable adicional y recibe el texto restante en la línea después del último token que se analiza. usebackq Especifica que se ejecute una cadena entre comillas inversas como un comando, use una cadena entre comillas simples como una cadena literal o, para los nombres de archivo largos que contienen espacios, permita que los nombres de archivo de <set>, se incluyan entre comillas dobles.Sustitución de variables: En la tabla siguiente se muestra la sintaxis opcional (para cualquier variable I):
Variable con modificador Description %~IExpande %Ique quita las comillas circundantes.%~fISe %Iexpande a un nombre de ruta de acceso completo.%~dISolo se %Iexpande a una letra de unidad.%~pISolo se expande %Ia una ruta de acceso.%~nISolo se expande %Ia un nombre de archivo.%~xISolo se expande %Ia una extensión de nombre de archivo.%~sIExpande la ruta de acceso para contener solo nombres cortos. %~aISe %Iexpande a los atributos de archivo del archivo.%~tISe expande %Ihasta la fecha y hora del archivo.%~zISe expande %Ial tamaño del archivo.%~$PATH:IBusca en los directorios enumerados en la variable de entorno PATH y se %Iexpande al nombre completo del primer directorio encontrado. Si el nombre de la variable de entorno no está definido o la búsqueda no encuentra el archivo, este modificador se expande a la cadena vacía.En la tabla siguiente se enumeran las combinaciones modificadores que puede usar para obtener resultados compuestos.
Variable con modificadores combinados Description %~dpISolo se %Iexpande a una letra de unidad y una ruta de acceso.%~nxISolo se expande %Ia un nombre de archivo y una extensión.%~fsISe %Iexpande a un nombre de ruta de acceso completo solo con nombres cortos.%~dp$PATH:IBusca en los directorios que aparecen en la variable de entorno PATH para %Iy se expande a la letra de unidad y la ruta de acceso de la primera encontrada.%~ftzaISe %Iexpande a una línea de salida que es como dir.En los ejemplos anteriores, puede reemplazar
%Iy PATH por otros valores válidos. Un nombre de variable válido para finaliza la %~ sintaxis.Mediante el uso de nombres de variables mayúsculas como
%I, puede hacer que el código sea más legible y evitar confusiones con los modificadores, que no distinguen mayúsculas de minúsculas.
Análisis de una cadena: Puede usar la
for /flógica de análisis en una cadena inmediata ajustando<literalstring>entre comillas dobles (sin usebackq) o entre comillas simples (con usebackq), por ejemplo, (MyString) o ('MyString').<literalstring>se trata como una sola línea de entrada de un archivo. Al analizar<literalstring>entre comillas dobles, los símbolos de comando como (\ & | > < ^) se tratan como caracteres normales.Análisis de salida: Puede usar el
for /fcomando para analizar la salida de un comando colocando una comillas<command>inversas entre paréntesis. Se trata como una línea de comandos, que se pasa a un Cmd.exesecundario. La salida se captura en memoria y se analiza como si fuera un archivo.
Examples
Para usarlo en un archivo por lotes, use la sintaxis siguiente:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Para mostrar el contenido de todos los archivos del directorio actual que tienen la extensión .doc o .txt mediante la variable reemplazable %f, escriba:
for %f in (*.doc *.txt) do type %f
En el ejemplo anterior, cada archivo que tiene la extensión .doc o .txt en el directorio actual se sustituye por la variable %f hasta que se muestra el contenido de cada archivo. Para usar este comando en un archivo por lotes, reemplace cada aparición de %f por %%f. De lo contrario, se omite la variable y se muestra un mensaje de error.
Para analizar un archivo, omite las líneas comentadas, escriba:
for /f "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
Este comando analiza cada línea enmyfile.txt. Ignora las líneas que comienzan con un punto y coma y pasa la segunda y tercera ficha de cada línea al cuerpo for (las fichas están delimitadas por comas o espacios). El cuerpo de la instrucción for hace referencia a %i obtener el segundo token, %j obtener el tercer token y %k obtener todos los tokens restantes. Si los nombres de archivo que proporcione contienen espacios, use comillas alrededor del texto (por ejemplo, Nombre de archivo). Para usar comillas, debe usar usebackq. De lo contrario, las comillas se interpretan como la definición de una cadena literal que se va a analizar.
%i se declara explícitamente en la instrucción for . %j y %k se declaran implícitamente mediante tokens=. Puede usar tokens= para especificar hasta 26 tokens, si no provoca un intento de declarar una variable superior a la letra z o Z.
Para analizar la salida de un comando colocando set entre paréntesis, escriba:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Para realizar un bucle recursivo de todos los archivos de un directorio, incluidos subdirectorios y eco de su ruta de acceso completa, cuando se modificaron por última vez y su tamaño de archivo, escriba:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA