2010-12-08 8 views
6

एक फ़ाइल से लाइनों को पढ़ने के लिए एक बैच फ़ाइल में, है न होने एक फ़ाइल से पढ़ने लाइनों:बैच: अपने रास्ते में रिक्त स्थान

for /f %%a in (myfile.txt) do (
    :: do stuff... 
) 

अब आप फ़ाइल लगता है C:\Program Files\myfolder

for /f %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a 
) 

परिणाम:

C:\Program Files\myfolder\myfile.txt 

यह एक स्ट्रिंग के रूप में दिए गए पथ व्याख्या करने के लिए लगता है, और इस तरह %%a मैं आपका दिया गया रास्ता

प्रलेखन में इस बारे में कुछ भी नहीं मिला है। कृपया मुझे शूट करने से पहले कोई मेरी मदद करें।

+1

तक कोई आता है एक बेहतर उत्तर के साथ, कॉपी करें "सी: \ प्रोग्राम फ़ाइलें \ myfolder \ myfile.txt" temp.txt, लूप के लिए, फिर DEL temp.txt –

+0

@ गिल्बर्ट: उम्मीद है कि यह "my file.txt" नाम की फ़ाइल नहीं है .. – glmxndr

उत्तर

6

help for टाइप करते समय आपको प्राप्त होने वाले दस्तावेज़ आपको बताते हैं कि यदि आपके पास रिक्त स्थान वाला पथ है तो क्या करना है।

For file names that contain spaces, you need to quote the filenames with 
double quotes. In order to use double quotes in this manner, you also 
need to use the usebackq option, otherwise the double quotes will be 
interpreted as defining a literal string to parse. 

डिफ़ॉल्ट रूप से, FOR /F की वाक्य रचना इस प्रकार है।

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] 
FOR /F ["options"] %variable IN ("string") DO command [command-parameters] 
FOR /F ["options"] %variable IN ('command') DO command [command-parameters] 

इस वाक्य रचना से पता चलता है कि क्यों अपने type वैकल्पिक हल काम करता है। क्योंकि एकल उद्धरण type कमांड और लूप को आउटपुट पर निष्पादित करने के लिए कहते हैं। आप usebackq विकल्प, इस वाक्य-विन्यास परिवर्तन जोड़ते हैं:

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] 
FOR /F ["options"] %variable IN ('string') DO command [command-parameters] 
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters] 

अब आप फ़ाइलों को दोहरे उद्धरण पथ, एकल उद्धरण शाब्दिक तार, और बैकटिक (कब्र लहजे) डाल चारों ओर निष्पादित करने के लिए आदेश देता है।

तो तुम ऐसा करना चाहते हैं:

for /f "usebackq" %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a 
) 
+0

मुझे प्रलेखन के उस हिस्से को याद आया। धन्यवाद ! – glmxndr

1

इसे मिला।

for /f %%a in ('type "C:\Program Files\myfolder\myfile.txt"') do (
    echo Deleting: %%a 
) 

मुझसे पूछें कि यह क्यों काम करता है।

+0

क्योंकि TYPE एक टेक्स्ट फ़ाइल प्रदर्शित करता है। आपका फॉर लूप स्ट्रिंग को संसाधित कर रहा है जो myfile.txt की फ़ाइल सामग्री का प्रतिनिधित्व करता है। –

+0

हां लेकिन यह "for/f" के साथ काम करता है जो फ़ाइलों को पढ़ने के लिए है। मैं उम्मीद करता था कि बिना "एफ" के साथ काम करने के लिए ... और यह नहीं है। वैसे भी ... खुद को गोली मार नहीं दी, यह सबसे महत्वपूर्ण है। – glmxndr

0

बस नीचे दिए गए कोड को साझा करने, उम्मीद है कि किसी को लाभ मिलेगा।

नीचे दिया गया कोड दोनों पथों को स्थान लेता है और यदि पढ़ने की रेखाएं रिक्त स्थान हैं, तो अंतरिक्ष के गायब होने के बाद वर्णों का कोई भी मुद्दा नहीं होगा;

/च के लिए

"टोकन = * delims =," %% एक में ('प्रकार "C: \ Progrem फ़ाइल \ मेरे कार्यक्रम"') कर ( %% गूंज एक )

संबंधित मुद्दे