for - Comando de bucle

Mantenido el

Al crear archivos por lotes, es habitual encontrarse con situaciones en las que se desea “ejecutar la misma operación sobre varios archivos” o “repetir un proceso un número determinado de veces.”

El comando FOR es el que hace posible este tipo de procesamiento en bucle.

Este artículo explica el comando FOR desde los conceptos básicos hasta cada opción, con ejemplos de código prácticos.

Sintaxis básica del comando FOR

La sintaxis básica del comando FOR es la siguiente.

FOR %%variable IN (conjunto) DO comando
ElementoDescripción
%%variableVariable que recibe cada valor en el bucle (una letra, a–z o A–Z)
(conjunto)Valores, comodines o conjunto de archivos a iterar
comandoComando a ejecutar en cada iteración
チェック

Al ejecutar directamente en el símbolo del sistema, usa %variable (un signo de porcentaje). Dentro de un archivo por lotes, usa %%variable (dos signos de porcentaje).

Ejemplo básico

Un ejemplo sencillo que procesa varios valores en secuencia.

@echo off
setlocal

FOR %%i IN (manzana naranja uva) DO (
    echo Se seleccionó %%i
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>sample.cmd
Se seleccionó manzana
Se seleccionó naranja
Se seleccionó uva
C:\users\user>

Cada valor del conjunto se almacena en %%i de uno en uno, y se ejecuta el comando tras DO.

Iterar sobre archivos

Usando comodines, se puede iterar sobre archivos que coincidan con una condición.

@echo off
setlocal

FOR %%f IN (*.txt) DO (
    echo Archivo: %%f
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>list_txt.cmd
Archivo: documento.txt
Archivo: notas.txt
Archivo: leeme.txt
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

Se procesarán todos los archivos .txt del directorio actual.

Opción /L: Bucle sobre un rango numérico

La opción /L permite ejecutar un bucle incrementando un número.

FOR /L %%variable IN (inicio, paso, fin) DO comando
ParámetroDescripción
inicioValor inicial del bucle
pasoValor que se añade en cada iteración
finValor final del bucle

Contar del 1 al 5

@echo off
setlocal

FOR /L %%n IN (1, 1, 5) DO (
    echo Cuenta: %%n
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>count.cmd
Cuenta: 1
Cuenta: 2
Cuenta: 3
Cuenta: 4
Cuenta: 5
C:\users\user>

Cuenta regresiva de 2 en 2

Un valor de paso negativo produce una cuenta regresiva.

@echo off
setlocal

FOR /L %%n IN (10, -2, 0) DO (
    echo %%n
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>countdown.cmd
10
8
6
4
2
0
C:\users\user>

Opción /D: Iterar sobre directorios

La opción /D itera únicamente sobre directorios, no sobre archivos.

FOR /D %%variable IN (patrón) DO comando

Ejemplo

@echo off
setlocal

echo Carpetas en el directorio actual:
FOR /D %%d IN (*) DO (
    echo   [DIR] %%d
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>list_dirs.cmd
Carpetas en el directorio actual:
[DIR] Documentos
[DIR] Descargas
[DIR] Imágenes
C:\users\user>

Opción /R: Bucle recursivo incluyendo subdirectorios

La opción /R itera a través de todos los subdirectorios bajo una raíz dada.

FOR /R [ruta raíz] %%variable IN (patrón) DO comando

Si se omite la ruta raíz, se usa el directorio actual.

Ejemplo: Buscar todos los archivos .txt

@echo off
setlocal

echo Buscando todos los archivos .txt...
FOR /R %%f IN (*.txt) DO (
    echo Encontrado: %%f
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>find_all_txt.cmd
Buscando todos los archivos .txt…
Encontrado: C:\Users\usuario\Documentos\leeme.txt
Encontrado: C:\Users\usuario\Documentos\notas\nota.txt
Encontrado: C:\Users\usuario\Documentos\backup\antiguo.txt
C:\users\user>
チェック

Usar la opción /R en un directorio con muchos archivos puede tardar bastante tiempo.

Opción /F: Leer contenido de archivos o salida de comandos

La opción /F es la más potente. Lee cada línea de un archivo de texto o procesa la salida de un comando.

FOR /F ["opciones"] %%variable IN (entrada) DO comando

Procesar cada línea de un archivo de texto

@echo off
setlocal

echo Mostrando contenido del archivo línea a línea:
FOR /F %%linea IN (datos.txt) DO (
    echo %%linea
)

endlocal

Sub-opciones disponibles

OpciónDescripción
delims=charsCaracteres delimitadores (por defecto: espacio y tabulador)
tokens=nQué token(s) extraer
skip=nNúmero de líneas a omitir al inicio
eol=charTrata las líneas que comienzan con este carácter como comentarios
usebackqTrata las comillas inversas como comandos, las comillas simples como cadenas y las dobles para rutas con espacios

Ejemplo: Procesar un archivo CSV

@echo off
setlocal

echo Procesando CSV de nombre,edad,ciudad:
FOR /F "tokens=1,2,3 delims=," %%a IN (usuarios.csv) DO (
    echo Nombre: %%a / Edad: %%b / Ciudad: %%c
)

endlocal

Con usuarios.csv conteniendo:

Alicia,25,Madrid
Roberto,30,Barcelona
Carlos,28,Sevilla
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>read_csv.cmd
Procesando CSV de nombre,edad,ciudad:
Nombre: Alicia / Edad: 25 / Ciudad: Madrid
Nombre: Roberto / Edad: 30 / Ciudad: Barcelona
Nombre: Carlos / Edad: 28 / Ciudad: Sevilla
C:\users\user>

Procesar la salida de un comando

Encierra un comando entre comillas invertidas para iterar sobre su salida.

@echo off
setlocal

echo Contando archivos en el directorio actual:
set count=0
FOR /F %%f IN ('dir /b /a-d') DO (
    set /a count+=1
)
echo Número de archivos: %count%

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>process_output.cmd
Contando archivos en el directorio actual:
Número de archivos: 5
C:\users\user>

Modificadores de variables

Las variables de FOR admiten modificadores para extraer información de archivos.

ModificadorDescripción
%%~fRuta completa
%%~dSolo la letra de unidad
%%~pRuta sin la unidad
%%~nNombre de archivo sin extensión
%%~xSolo la extensión
%%~zTamaño del archivo en bytes
%%~tFecha y hora del archivo

Ejemplo

@echo off
setlocal

FOR %%f IN (*.txt) DO (
    echo Archivo: %%f
    echo   Ruta completa: %%~ff
    echo   Nombre: %%~nf
    echo   Extensión: %%~xf
    echo   Tamaño: %%~zf bytes
    echo.
)

endlocal

Ejemplos prácticos

Renombrar archivos en masa

@echo off
setlocal enabledelayedexpansion

set prefix=copia_
set count=1

FOR %%f IN (*.txt) DO (
    set newname=%prefix%!count!%%~xf
    echo Renombrando %%f a !newname!
    ren "%%f" "!newname!"
    set /a count+=1
)

echo Listo.
endlocal

Eliminar archivos de registro antiguos

@echo off
setlocal

echo Eliminando archivos de registro con más de 7 días...
FOR /F "delims=" %%f IN ('forfiles /p "C:\logs" /s /m *.log /d -7 /c "cmd /c echo @path" 2^>nul') DO (
    echo Eliminando: %%f
    del "%%f"
)

echo Listo.
endlocal

Resumen

El comando FOR es una herramienta poderosa para los bucles en archivos por lotes.

Puntos clave:

  • Sintaxis básica: FOR %%variable IN (conjunto) DO comando
  • Opción /L: Bucle sobre un rango numérico (inicio, paso, fin)
  • Opción /D: Iterar solo sobre directorios
  • Opción /R: Bucle recursivo incluyendo subdirectorios
  • Opción /F: Leer contenido de archivos o procesar la salida de comandos

Preguntas de práctica

Pregunta 1

¿Cuál es la instrucción FOR correcta para mostrar 1, 2, 3 en secuencia dentro de un archivo por lotes?

回答がサーバーに送信されることはありません
Pregunta 2

¿Qué opción se usa para crear un bucle sobre un rango numérico?

回答がサーバーに送信されることはありません
Pregunta 3

¿Cuál es la sintaxis correcta para contar del 1 al 10 con la opción /L?

回答がサーバーに送信されることはありません

Comandos relacionados

In preparation
La página vinculada está actualmente en construcción. Por favor, espere un momento.
#Símbolo del sistema #Archivo por lotes #FOR #Bucle #Comando