2012-10-22 12 views
5

का उपयोग कर फ़ाइल से खाली रिक्त स्थान वाली रेखाएं पढ़ें I बैच का उपयोग करके टेक्स्ट फ़ाइल से प्रत्येक पंक्ति को पढ़ने की कोशिश कर रहा हूं।बैच

फाइल के अंदर लाइनों कुछ खाली रिक्त स्थान है, तो इस इनपुट का एक उदाहरण है:

This is the first line 
This is the second line 
... 

मैं निम्नलिखित स्रोत कोड

FOR /f %%a in ("%1") do (
    @echo %%a 
) 
goto:eof 

उत्पादन का उपयोग कर रहा है follwing:

This 
This 
... 

मैंने पढ़ा है स्टैक ओवरफ़्लो में प्रवेश करने वाली प्रविष्टि लेकिन मेरी समस्या का समाधान नहीं करती है। Batch : read lines from a file having spaces in its path

+0

मान लीजिए '% 1' आपका फ़ाइल नाम है, तो आपका पोस्ट कोड आपके द्वारा वर्णन किए जाने पर काम नहीं कर सकता है। या तो आपको 'usebackq" 'विकल्प का उपयोग करना होगा, या फिर आपका IN() खंड उद्धृत नहीं किया जाना चाहिए। – dbenham

उत्तर

6

इसे आजमाएं।

FOR /f "tokens=* delims=," %%a in ('type "%1"') do (
    @echo %%a 
) 
+2

अब कोड प्रत्येक पंक्ति को ',' के पहले मौके पर काट देगा। – dbenham

2

आप जहां बैच प्रत्येक पंक्ति

FOR /f "delims=;" %%a in ("%1") do (
    @echo %%a 
) 

पंक्ति के अंत के लिए डिफ़ॉल्ट सीमांकक एक अर्द्ध बृहदान्त्र है पर अप करने के लिए पढ़ता है के लिए अपने परिसीमक सेट की जरूरत है। वैकल्पिक रूप से उस वर्ण का उपयोग करें जिसे आपको ~ या ¬ या कुछ जैसी फ़ाइल में देखने की संभावना नहीं है।

+0

डिलीमीटर को अजीब मूल्य पर क्यों सेट करना, इसे बस कुछ भी क्यों नहीं सेट करना? – jeb

+0

@jeb आप इसे कुछ भी कैसे सेट करते हैं? 'delims =" 'इसे अंतरिक्ष में सेट कर देगा क्योंकि डिफ़ॉल्ट नहीं होगा? –

+0

नहीं, जैसे डेबेनहम शो, 'delims = "' इसे कुछ भी सेट नहीं किया गया है, केवल ईओएल को इस तरह से खाली मूल्य पर सेट नहीं किया जा सकता है, '' EOL =" 'ईओएल को उद्धरण पर सेट करेगा। लेकिन ईओएल अन्य तरीकों से खाली हो सकता है – jeb

3

बाली सी और हेनरी गाओ इस मुद्दे के आसपास स्कर्ट।

आपका कोड 1 स्थान पर मान को समाप्त कर रहा है क्योंकि FOR/F को एक स्ट्रिंग को सीमित टोकन में पार्स करने के लिए डिज़ाइन किया गया है। डिफ़ॉल्ट डिलीमीटर अंतरिक्ष और टैब हैं। आप DELIMS को कुछ भी सेट करके पूरी लाइन को सुरक्षित रख सकते हैं।

for /f "usebackq delims=" %%a in ("%~1") do echo %%a 

लेकिन वहाँ अभी भी संभावित समस्याओं कर रहे हैं: के लिए/एफ पाश खाली लाइनों को छोड़ देता है, और यह भी लाइनों कि EOL चरित्र (; डिफ़ॉल्ट रूप से) के साथ शुरू छोड़ देता है।

फॉर कमांड (विशेष रूप से FOR/F संस्करण) एक जटिल जानवर है। मैं फोर कमांड के नुकीले और क्रैनियों के अच्छे सारांश के लिए http://judago.webs.com/batchforloops.htm पढ़ने की सलाह देता हूं।

+0

दुख। लिंक अब काम नहीं करता है .. –