2011-08-06 6 views
18

क्या कोई भी कृपया बता सकता है कि निम्नलिखित कोड कैसे काम करता है, रेखा से लाइन। मैं वास्तव में खो गया हूँ। मैं सीखने की कोशिश कर रहा हूं कि फोर कमांड का उपयोग कैसे करें लेकिन मुझे यह समझ में नहीं आता है।बैच फ़ाइल फॉर/एफ टोकन

@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 

उत्तर

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

यह एक फ़ाइल पंक्ति-दर-पंक्ति पढ़ता है, प्रमुख स्थानों (धन्यवाद, जेब) को हटाने।

set line=%%f 

सेट तो लाइन के लिए line चर सिर्फ पढ़ सकते हैं और

call :procesToken 

एक सबरूटीन कि सबरूटीन ऊपर उल्लेख किया है की शुरुआत है लाइन

:processToken 

के साथ कुछ करता है कहता है।

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

तो / पर लाइन बंट जाएगा, लेकिन पहले टोकन के बाद tokenization रोक।

echo Got one token: %%a 

इच्छा उत्पादन है कि पहले टोकन और

set line=%%b 

लाइन के आराम करने के line चर सेट हो जाएगा।

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

और अगर line अभी तक खाली नहीं है (अर्थात सभी टोकन संसाधित), यह शुरू करने के लिए देता है, लाइन के बाकी के साथ जारी है।

+4

+1, लेकिन पहले 'FOR/F "टोकन = * delims =" ' – jeb

+0

लाइन से सभी प्रमुख रिक्त स्थान हटा देता है धन्यवाद, मैंने इसे संपादित किया :-) – Joey