2011-08-06 8 views
18

¿Alguien puede explicar exactamente cómo funciona el siguiente código, línea por línea. Estoy realmente perdido. He estado tratando de aprender a usar el comando FOR pero no entiendo esto.Archivo por lotes Fichas FOR/f

@echo off 

for /f "tokens=* delims= " %%f in (myfile) do (
    set line=%%f 
    call :processToken 
) 
    goto :eof 

:processToken 

    for /f "tokens=1* delims=/" %%a in ("%line%") do (
    echo Got one token: %%a 
    set line=%%b 
) 
    if not "%line%" == "" goto :processToken 
    goto :eof 

Respuesta

29
for /f "tokens=* delims= " %%f in (myfile) do 

Esto lee una línea por línea en archivos, eliminar los espacios iniciales (gracias, Jeb).

set line=%%f 

conjuntos entonces la variable line a la línea que acaba de leer y

call :procesToken 

llama a una subrutina que hace algo con la línea

:processToken 

es el comienzo de la subrutina se mencionó anteriormente.

for /f "tokens=1* delims=/" %%a in ("%line%") do 

A continuación, dividir la línea en /, pero deteniéndose tokenización después de la primera ficha.

echo Got one token: %%a 

dará salida a la primera ficha y

set line=%%b 

establecerá la variable line con el resto de la línea.

if not "%line%" == "" goto :processToken 

Y si line todavía no está vacío (es decir, todas las fichas procesadas), devuelve a la salida, continuar con el resto de la línea.

+4

+1, pero los primeros tokens 'FOR/F '= * delims =" 'eliminan todos los espacios iniciales de la línea – jeb

+0

Gracias, lo he editado en :-) – Joey

Cuestiones relacionadas