2011-08-06 12 views
18

Aşağıdaki kodun tam olarak nasıl çalıştığını tam olarak açıklayan herhangi biri olabilir mi? Gerçekten kayboldum. FOR komutunu nasıl kullanacağımı öğrenmeye çalışıyorum ama bunu anlamıyorum.Batch dosyası FOR/f tokenler

@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 

cevap

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

Bu gelen boşluklar (sayesinde jeb) çıkarılması, bir dosya satır-satır okur.

set line=%%f 

kümeleri hattına line değişken sadece okumak ve

call :procesToken 

yukarıda belirtilen alt programın başlangıç ​​çizgisi

:processToken 

ile bir şeyler yapan bir alt yordam çağırır.

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

sonra / çizgiyi bölünmüş, ancak ilk belirteci sonra sembolleştirmeyi durdurma olacaktır. İlk şekilde ve

set line=%%b 

hattının geri kalan kısmına line değişken koyacaktır

echo Got one token: %%a 

çıktısı.

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

ve line halinde

(yani her simge işlenmiş) henüz boş değil, satırın geri kalanı ile devam eden, başlangıç ​​geri döner.

+4

+1, Ancak ilk "FOR/F" tokens = * delims = "' – jeb

+0

satırındaki tüm önde gelen alanları kaldırır. Teşekkürler, düzenledim :-) – Joey

İlgili konular