AÑADIRÉ MÁS INFORMACIÓN A ESTE APARTADO DE "FOR" DENTRO DE POCO...
ESTE APARTADO Y EL TUTORIAL, NO ESTÁN ACABADOS.
8. Búcles
Hay tres maneras de crear un búcle.
Una manera es usando el comando
FOR, el cual ejecuta un comando o una serie de comandos repetidamente sobre varios archivos o datos.
Otra manera es usando el comando
FORFILES,
Y la última manera de crear un búcle es usando etiquetas, y el comando
GOTO.
Podemos crear un búcle infinito usando una etiqueta, y el comando
GOTO, aunque este tipo de búcle es muy distinto y no tiene el mismo fín que un
FOR.
Ejemplo de búcle infinito:
@ECHO OFF
SET VAR1=A
SET VAR2=B
:ETIQUETA
IF NOT "%VAR1%" EQU "%VAR2%" (
Echo Los valores "%VAR1%" y "%VAR2%" no conciden.
GOTO :ETIQUETA
) ELSE (
Echo Los valores "%VAR1%" y "%VAR2%" coinciden.
Pause&Exit
)
Hay varios tipos de
FOR, por lo tanto varios tipos de búcles.
FOR es un tipo de búcle para archivos, o para una serie de expresiones.
Sintaxis:
FOR %%variable IN (archivo o expresión) DO (comandos)Ejemplos:
@ECHO OFF
FOR %%A in (*.bat) DO (Echo %%A)
Pause&Exit
@ECHO OFF
SET "VARIABLE=a b c d e"
FOR %%A in (%VARIABLE%) DO (Echo %%A)
Pause&Exit
(
FOR-Files-Rooted at Path)
FOR /R es un tipo de búcle recursivo para archivos.
Sintaxis:
FOR /R "RUTA" %%variable IN (archivos) DO (comandos)Ejemplos:
@ECHO OFF
FOR /R "C:\" %%A in (*.dll) DO (Echo %%A)
Pause&Exit
(
FOR-Directories)
FOR /D es un tipo de búcle para carpetas.
Sintaxis:
FOR /D "RUTA" %%variable IN (carpetas) DO (comandos)NOTA: Se puede usar en combinación del parámetro "/R" para procesar directorios recursivamente.
Ejemplos:
@Echo OFF
FOR /D /R "C:\" %%A in (*system32) DO (Echo %%A)
Pause >NUL
(
FOR-List of numbers)
FOR /L es un tipo de búcle para un rango de números.
Sintaxis:
FOR /L %%variable IN (Número inicial,Incremento,Número final) DO (comandos)Ejemplos:
@ECHO OFF
FOR /L %%A IN (0,1,10) DO (Echo %%A)
Pause&Exit
@ECHO OFF
FOR /L %%A IN (5,5,25) DO (Echo Hola!)
Pause&Exit
Aquí vemos como el primer número del rango es "5", se va incrementando el número por "5" hasta llegar al "25", por lo tanto el bucle se efectúa 5 veces.
(
FOR-File contents) (o
FOR-Command Results)
FOR /F es un tipo de búcle para el contenido de un archivo, o para el resultado de un comando.
Sintaxis:
FOR /F "PARÁMETROS" %%variable IN ('Archivo o comando') DO (comandos)Los comandos deben estar entre comillas
('comando')Los parámetros de
FOR /F son:
eol=X - Añade un caracter de comentario a cada línea.
skip=X - 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.
usebackq - Especifica que 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 deomillas dobles para entrecomillar los nombres de archivo en un conjunto de archivos.
tokens=x,y,m-n - Especifica que símbolos de cada línea deben pasarse al cuerpo de la clausula "for" en cada iteración.
Esto causará que los nombres de variables adicionales sean asignados.
Si el último caracter 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.
Ejemplo
skip:
@ECHO OFF
FOR /F "Skip=1" %%A IN ('Echo Linea1 ^& Echo linea2 ^& Echo Linea3') DO (Echo %%A)
Pause&Exit
Ejemplo
delims:
@ECHO OFF
FOR /F "Delims=c" %%A IN ('Echo abcde') DO (Echo %%A)
Pause&Exit