El comando: "FOR" está activado Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponible
Los ejemplos del comando "FOR"
El
`FOR`El comando en el símbolo del sistema de Windows se utiliza para realizar un bucle en archivos por lotes. Aquí hay unos ejemplos:
Ejemplo 1: recorrer archivos en un directorio:
FOR %G IN (directorio\*) DO ECHO %G
Descripción: Este comando imprime el nombre de cada archivo en el directorio especificado.
Ejemplo 2: recorrer archivos con una extensión de archivo específica:
FOR %G IN (directorio\*.txt) DO ECHO %G
Descripción: Imprime el nombre de cada archivo de texto en el directorio especificado.
Ejemplo 3: Iterar a través de archivos de forma recursiva en subdirectorios:
FOR /R directorio %G IN (*.txt) DO ECHO %G
Descripción: Recorre recursivamente todos los subdirectorios del directorio especificado e imprime el nombre de cada archivo de texto.
Ejemplo 4: recorrer números en un rango específico:
FOR /L %G IN (1,1,10) DO ECHO %G
Descripción: Genera los números del 1 al 10.
Ejemplo 5: recorrer caracteres en una cadena:
FOR %G IN ("Hola") DO ECHO %G
Descripción: Imprime cada letra de la palabra
"Hola".
Ejemplo 6: recorrer el contenido del archivo línea por línea:
FOR /F "tokens=*" %G IN (archivo.txt) DO ECHO %G
Descripción: Itera a través de las líneas del archivo
"File.txt" y genera cada línea.
Ejemplo 7: iteración a través de variables de entorno:
FOR %G IN (%PATH%) DO ECHO %G
Descripción: Itera a través de las rutas en la variable de entorno.
`PATH`y genera cada ruta.
Ejemplo 8: Uso de`SET`en un bucle:
FOR %G IN (1 2 3) DO SET /A Número=%G * 2 & ECHO doble de %G es %Número%
Descripción: Establece una variable
`Número`al doble del número actual en el bucle e imprime esto.
Ejemplo 9: iteración a través de subdirectorios y archivos:
FOR /R %G IN (*) DO ECHO %G
Descripción: Atraviesa recursivamente todos los subdirectorios y archivos del directorio actual.
Ejemplo 10: Bucles anidados:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Descripción: Anida dos bucles e imprime todas las combinaciones de %G y %H.
Tenga en cuenta que en archivos por lotes
`%`a través de
`%%`debe ser reemplazado. Por ejemplo:
`FOR %G IN (...) DO ECHO %%G`. Sólo se utiliza el signo de uno por ciento en el mensaje directo (
`%`).
"FOR" Extracto de la ayuda de Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Ejecuta el comando para cada uno de los archivos especificados en
el
conjunto de archivos.
FOR %variable IN (conjunto) DO comando [parámetros]
%variable Especifica un parámetro reemplazable de una sola
letra.
(conjunto) Especifica un conjunto de uno o más archivos. Se
pueden
usar comodines.
comando Especifica el comando que se ejecutará para cada
archivo.
parámetros Especifica los parámetros o modificadores del
comando
especificado.
Para usar el comando FOR en un programa por lotes, especificar
%%variable en vez de %variable. Los nombres de las variables
distinguen entre mayúsculas y minúsculas, por lo tanto %i no es
lo
mismo que %I.
Si las extensiones de comandos están habilitadas, las siguientes
formas
adicionales del comando FOR son compatibles:
FOR /D %variable IN (conjunto) comando DO [parámetros]
Si el conjunto contiene comodines, se especifica para coincidir
con el nombre
del directorio en vez de los nombres de archivo.
FOR /R [[unidad:]ruta] %variable IN (set) comando DO [parámetros]
Guía el directorio del árbol de raíz a [unidad:]ruta, ejecutando
la
instrucción FOR en cada directorio del árbol. Si no se especifica
el
directorio después de /R entonces se asume que es el directorio
actual.
Si el conjunto es solamente un simple carácter de punto (.)
entonces enumerará
el árbol del directorio.
FOR /L %variable IN (inicio, paso, fin) comando DO
[parámetros]
El conjunto es una sucesión de números que va desde inicio hasta
fin y que
aumenta (o disminuye) en función de lo especificado en paso. Así
(1, 1, 5) generará la sucesión 1 12 3 4 5 y (5, -1, 1) generará
la sucesión 5 4 3 2 1
FOR /F ["opciones"] %variable IN (conjunto-archivo) comando DO
[parámetros]
FOR /F ["opciones"] %variable IN ('cadena') comando
DO [comando-parámetros]
FOR /F ["opciones"] %variable IN ('comando')comando
DO [comando-parámetros]
o, si la opción usebackq está presente:
FOR /F ["opciones"] %variable IN (conjunto-archivo) comando DO
[parámetros]
comando DO [comando-parámetros]
FOR /F ["opciones"] %variable IN ('cadena') comando
DO [parámetros]
FOR /F ["opciones"] %variable IN (`comando`) comando
DO [parámetros]
Conjunto de archivos es uno o más nombres de archivos. Cada
archivo es abierto, leído y procesado antes de ir al siguiente
archivo en el conjunto
de archivos.
Procesar consiste en leer el archivo, partirlo en líneas
individuales de texto
y analizar cada línea en cero o más símbolos. El cuerpo del
bucle se llama
con los valores de la variable establecidos para las cadenas de
símbolo
encontradas. De forma predeterminada, /F pasa el primer símbolo
separado en
blanco desde cada línea .
Las líneas en blanco son saltadas. Puede sustituir el
comportamiento de análisis predeterminado si especifica el
parámetro opcional "opciones". Esto
es una cadena entre comillas que contiene una o más palabras
claves para especificar diferentes opciones de análisis. Las
palabras claves son:
eol=c - especifica un carácter de comentario
al final de la línea (sólo uno)
skip=n - especifica el número de
líneas que hay que saltarse al
principio
del archivo.
delims=xxx - especifica un grupo de delimitadores.
Esto reemplaza al grupo de
delimitadores
predeterminados de espacio y
tabulación.
tokens=x,y,m-n - especifica qué símbolos de cada línea
deben
pasarse al cuerpo de la cláusula "for"
en
cada iteración.
Esto causará que los nombres de
variables
adicionales sean asignados.
La forma m-n es un intervalo del
símbolo
m-ésimo al símbolo n-ésimo. Si el
último
carácter en la cadena tokens= es un
asterisco,
se asigna una variable adicional que
recibe el
resto del texto en la línea posterior
al último
símbolo analizado.
usebackq - especifica que la nueva semántica está
vigente,
donde una cadena entre comillas
inversas se ejecuta
como un comando y una cadena con
comillas simples
es un comando de cadena literal y
permite el uso de
comillas dobles para entrecomillar los
nombres de
archivo en un grupo de nombres de
archivos.
Estos ejemplos pueden ayudar:
FOR /F "eol=; tokens=2,3* delims=, " %i in (archivo.txt) do @echo
%i %j %k
analizará cada línea en mi archivo.txt excepto las que inicien
con un punto
y coma, pasando el segundo y tercer símbolo de cada línea al
cuerpo de FOR.
Los símbolos están delimitados por comas y/o espacios.
Tenga en cuenta que las instrucciones del cuerpo de FOR hacen
referencia a %i para obtener el segundo símbolo, a %j para
obtener el tercero y a %k para obtener el resto de los símbolos
posteriores al tercero. Para los nombres
de archivo que contengan espacios, necesita poner poner comillas
dobles en
los nombres de archivos. Para usar comillas dobles de esta
manera, también necesita usar la opción usebackq, de lo contrario
las comillas dobles
serán interpretadas para definir el análisis de una cadena
literal.
%i está explícitamente declarado en la instrucción y %i está
explícitamente declarado en la instrucción FOR, %j y %k están
declarados implícitamente a través de la opción =tokens. Puede
especificar
hasta 26 símbolos a través de la línea =tokens, siempre y cuando
no cause
un intento de declarar una variable mayor que la letra 'z' o 'Z'.
Recuerde, los nombres de variables de FOR son de una sola letra y
distinguen mayúsculas de minúscula. Además, las variables son
globales y no puede haber
más de 52 variables activas al mismo tiempo.
También puede usar la lógica de análisis de FOR /F en una
cadena inmediata convirtiendo el conjunto de archivos entre
paréntesis en una cadena entre
comillas usando caracteres con comillas simples. Será tratada y
analizada
como una simple línea de entrada de un archivo.
Finalmente, puede usar el comando FOR /F para analizar la salida
de un comando. Se hace convirtiendo el conjunto de archivos
entre paréntesis una cadena con comillas invertidas. Se tratará
como una línea de comandos que se pasa a un CMD.EXE secundario y
la salida es capturada en memoria y evaluada como si fuera
un archivo. Como en el siguiente ejemplo:
FOR /F "usebackq delims==" %i IN (`conjunto`) DO @echo %i
enumerará los nombres de variable de entorno en el entorno
actual.
Además, la sustitución de las referencias de variables
FOR ha sido mejorada.
Ahora puede usar la siguiente sintaxis opcional:
%~I - expande %I quitando las comillas (") que
pudiera haber
%~fI - expande %I a un nombre de ruta
calificado
%~dI - expande %I sólo a una letra de
unidad
%~pI - expande %I sólo a una ruta
%~nI - expande %I sólo a un nombre de
archivo
%~xI - expande %I sólo a una extensión de archivo
%~sI - ruta expandida contiene sólo nombres cortos
%~aI - expande %I a atributos de archivos
%~tI - expande %I a fecha/hora del archivo
%~zI - expande %I a tamaño del archivo
%~$PATH:I - busca los directorios de la lista de
la variable de entorno de PATH y expande %I al nombre totalmente
calificado
del primero que se encuentre.
Si el nombre de la variable de entorno no es definido o
no se encuentra el archivo en la búsqueda, el modificador se
expande a la
cadena vacía.
Los modificadores se pueden combinar para conseguir resultados
compuestos:
%~dpI - expande %I sólo a una letra de unidad
y ruta
%~nxI - expande %I sólo a un nombre de archivo y
extensión
%~fsI - expande %I sólo a un nombre de ruta
con nombres cortos
%~dp$PATH:i - busca los directorios de la lista de
la variable de entorno de PATH para %I y se expande a la letra de
unidad y
ruta del primero que encuentre.
%~ftzaI - expande %I a DIR como línea de salida.
En los ejemplos anteriores %I y PATH pueden ser reemplazados por
otros
valores válidos. La sintaxis %~ está terminada por un nombre de
variable
FOR válido.
El código se vuelve más legible si se usan variables en mayúscula
como %I,
además esto evita confundir las variables con los modificadores,
los cuales
no distinguen entre mayúsculas y minúsculas.
Información importante, consejos para el comando "FOR"
Al usar el
`FOR`comando en el símbolo del sistema de Windows, hay algunos puntos importantes a tener en cuenta:
1.
Sintaxis en archivos por lotes: Si tiene la
`FOR`comando en un archivo por lotes, debe
`%`a través de
`%%`sustituto. Por ejemplo:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Uso de variables: Normalmente se utilizan variables (p. ej.,
`%%G`) en el
`FOR`-Bucle para almacenar valores. Tenga en cuenta que las variables no pueden acceder a los valores asignados fuera del bucle.
SET Variable=Valor inicial
FOR %%G IN (Valor1 Valor2) DO SET Variable=%%G
ECHO %Variable%
aquí lo hará
`%Variable%`mantener el valor
"valor inicial" porque el
`SET`-Instrucción en un lugar separado.
`FOR`se ejecuta el bucle.
3.
Espacios en rutas o nombres de archivos: Si las rutas o nombres de archivos contienen espacios, la ruta o el nombre de archivo deben estar entre comillas para garantizar que se interpreten correctamente.
FOR %%G IN ("Directorio con espacios\Archivo con espacios.txt") DO ECHO %%G
4.
Opciones para el`FOR /F`-Bucle: Si tu
`FOR`en conexion con el
`/F`opción (por ejemplo,
`FOR /F "tokens=*" %%G IN (archivo.txt) DO ECHO %%G`), necesita conocer la sintaxis del
`tokens`y
`delims`Ajuste las opciones con cuidado para obtener los resultados deseados.
5.
Bucles anidados: Con los bucles anidados, debes asegurar el uso correcto de
`%`o
`%%`preste atención para asegurarse de que se haga referencia a las variables en el bucle correcto.
FOR %%G IN (1 2) DO (
ECHO Bucle exterior: %%G
FOR %%H IN (A B) DO ECHO Bucle interior: %%H
)
6.
Fin de las líneas del archivo en`FOR /F`: Si usted
`FOR /F`Para iterar sobre líneas en un archivo, de forma predeterminada cada línea hasta el primer espacio o pestaña se considera un token. Puedes hacer esto con la opción
`delims`ajustar.
FOR /F "tokens=* delims=" %%G IN (archivo.txt) DO ECHO %%G
7.
Opciones variables de fecha y hora: Si tiene la
`%DATE%`- o
`%TIME%`-Variables en uno
`FOR`-Loop, debes prestar atención a la configuración regional del sistema, ya que el formato puede variar.
8.
Iteración de archivos con codificación UTF-8: El
`FOR /F`El comando puede tener dificultades para iterar a través de archivos con codificación UTF-8. En tales casos, podría ser mejor utilizar otras herramientas como
`FINDSTR`usar.
Es importante considerar los requisitos específicos de su caso de uso y la
`FOR`-Ajuste el bucle en consecuencia. Puede
`FOR /?`en el símbolo del sistema para ver la ayuda completa y todas las opciones disponibles.