2011-08-06 13 views
18

Czy każdy może dokładnie wyjaśnić, jak działa poniższy kod, linia po linii. Naprawdę jestem zagubiony. Próbowałem nauczyć się używać polecenia FOR, ale nie rozumiem tego.Plik wsadowy FOR/F tokenów

@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 

Odpowiedz

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

Odczytuje wiersz wiersz po pliku, usuwając spacje (dzięki, Jeb).

set line=%%f 

zestawy wtedy line zmienna do linii po prostu czytać i

call :procesToken 

wywołuje podprogram, który robi coś z linią

:processToken 

to początek podprogramu wymienionego powyżej.

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

następnie podzielić linię na /, ale zatrzymując tokenizacja po pierwszym tokena.

echo Got one token: %%a 

wyjście wola, że ​​pierwszy znak i

set line=%%b 

ustawi zmienną line do reszty linii.

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

A jeśli line nie jest jeszcze pusta (czyli wszystkie żetony przetworzone), powraca do początku, kontynuując z resztą linii.

+4

+1, ale pierwsze tokeny "FOR/F" = * delims = "" usuwa wszystkie wiodące spacje z linii – jeb

+0

Dzięki, edytowałem je w :-) – Joey

Powiązane problemy