Resulta que estoy usando un FOR para traerme una por una las línes de un archivo de texto. Fíjense:
Tengo este archivo de texto: Archivo.txt, cuyo contenido es el siguiente:
Código:
Linea 1
Linea 2
Linea 3
Las líneas me las traigo como ya saben:
Código:
@echo off
set crrFile=c:\Archivo.txt
for /f "tokens=*" %%L in ("%crrFile%") do (
echo Procesando linea: %%L
)
echo.
echo Terminado
pause>nul
Esto funciona perfecto. Me lista las líneas justo como quiero:
Código:
Linea 1
Linea 2
Linea 3
Terminado.
Ahora bien, el problema se me presenta cuando uso este mismo código en una función llamada desde otro ciclo FOR. Vean cómo:
Esta vez tengo tres archivos de texto: Archivo1.txt, Archivo2.txt y Archivo3.txt, los cuales tienen el mismo contenido:
Código:
Linea 1
Linea 2
Linea 3
Pues bien, para listar las líneas de cada uno hago lo siguiente:
Código:
@echo off
:Funcion1
for /f "tokens=*" %%F in ('dir /a /b *.txt') do (
set "crrFile=%%F"
echo Procesando archivo: %%F
call:Funcion2
echo.
)
echo.
echo Terminado
pause>nul
:Funcion2
for /f "tokens=*" %%L in ("%crrFile%") do (
echo Procesando linea: %%L
)
goto:eof
Como ven, el código para listar el txt es igual al del primer caso; la única diferencia es que aquí tomo el nombre del archivo del ciclo FOR ejecutado en :Funcion1. Lo que no entiendo es por qué el ciclo de :Funcion2 no lista las líneas del archivo, aunque la variable %crrFile% si almacena bien el nombre de cada archivo de texto. En vez de eso, el segundo ciclo me vuelve a mostrar el nombre del archivo contenido en %crrFile%. Fíjense:
Código:
Procesando archivo: C:\Archivo1.txt
Procesando linea: C:\Archivo1.txt
Procesando archivo: C:\Archivo2.txt
Procesando linea: C:\Archivo2.txt
Procesando archivo: C:\Archivo3.txt
Procesando linea: C:\Archivo3.txt
Terminado.
Ven? No entiendo por qué hace esto! No muestra las líneas del archivo sino el nombre del archivo.
Por favor, alguien sabe por qué pasa eso? Yo de verdad no entiendo. Le agradezco puedan ayudarme.