2012-06-25 11 views
28

मैं सोच रहा था कि यह संभव था या नहीं? मैं विंडोज कमांड लाइन का उपयोग करने से परिचित नहीं हूं, लेकिन मुझे इसे उस प्रोजेक्ट के लिए उपयोग करना है जिस पर मैं काम कर रहा हूं। मेरे पास कई फाइलें हैं, जिनके लिए मुझे प्रत्येक के लिए एक फ़ंक्शन करने की आवश्यकता है। मैं अजगर के साथ काम करने के लिए प्रयोग किया जाता है, लेकिन जाहिर है यह थोड़ा अलग है, इसलिए मैं कुछ मदद की उम्मीद कर रहा था।विंडोज कमांड लाइन में लूप के लिए कैसे करें?

असल में मुझे फ़ोल्डर में 17 फाइलों के माध्यम से दोहराने के लिए लूप की आवश्यकता है, प्रत्येक पर एक फ़ंक्शन निष्पादित करें (जो कि मेरे पास प्रोजेक्ट के लिए यहां मौजूद विशिष्ट सॉफ़्टवेयर का उपयोग कर रहा है) और फिर वह एक अद्वितीय नाम के साथ फ़ाइल आउटपुट करेगा (फ़ंक्शन को सामान्य रूप से मुझे आउटपुट फ़ाइल नाम देने की आवश्यकता होती है) मैं इसे चूसता हूं और इसे 17 में से प्रत्येक के लिए हाथ से करता हूं, लेकिन मूल रूप से यह फ़ाइल का डेटाबेस बना रहा है, और फिर इसे 17 में से प्रत्येक की तुलना कर रहा है। हालांकि कई सौ बार के माध्यम से पुनरावृत्त किया जाना है। एक लूप का उपयोग करने से मुझे काम के दिन बचा सकते हैं।

सुझाव?

उत्तर

32

कमांडलाइन दुभाषिया वास्तव में एक के लिए निर्माण है कि आप एक बैच फ़ाइल के भीतर कमांड प्रॉम्प्ट से या से उपयोग कर सकते हैं देता है।

FOR %i IN (*.ext) DO my-function %i 

कौन सा * वर्तमान निर्देशिका में .ext मेरी-कार्य करने के लिए पारित किया जा रहा है (जो कर सकते थे विस्तार के साथ प्रत्येक फ़ाइल का नाम में परिणाम होगा, के लिए:

अपने उद्देश्य के लिए, आप शायद कुछ ऐसा चाहते हैं उदाहरण, एक और .bat फ़ाइल हो)।

(*.ext) हिस्सा "filespec" है, और कैसे आप फ़ाइलों के सेट निर्दिष्ट के साथ बहुत लचीला है। उदाहरण के लिए, आप कर सकते हैं:

FOR %i IN (C:\Some\Other\Dir\*.ext) DO my-function %i 

एक अलग निर्देशिका में एक ऑपरेशन करने के लिए।

filespec के लिए और सामान्य रूप से करने के लिए विकल्पों के स्कोर कर रहे हैं।

HELP FOR 

अधिक जानकारी के लिए कमांड प्रॉम्प्ट से देखें।

+0

धन्यवाद है कि बहुत उपयोगी है। मैं क्या करता हूं% और वास्तव में, फ़ंक्शन का उपयोग करने के लिए मुझे कमांड लाइन को वर्तमान निर्देशिका में सेट करने की आवश्यकता है, और वहां मौजूद फाइलें हैं जिन्हें मुझे फ़ंक्शन करने की आवश्यकता नहीं है। वे एक और निर्देशिका में हैं। क्या लूप के लिए कौन सी निर्देशिका करने के लिए यह कहने का कोई तरीका है? – TheFoxx

+0

% मैं सिर्फ एक चर है जो मिलान करने वाले फ़ाइल नाम रखता है। आप विभिन्न प्रारूपों में इसे प्राप्त करने के लिए विभिन्न संशोधक का उपयोग कर सकते हैं। मैंने वर्णन करने के लिए उत्तर अपडेट किया है कि फाइलपेक में एक अलग निर्देशिका शामिल हो सकती है, ताकि आप लूप को करने के लिए एक विशेष निर्देशिका निर्दिष्ट कर सकें।दस्तावेज/आर विकल्प भी बताता है, जो वांछित होने पर निर्देशिकाओं के माध्यम से लूप होगा। –

+2

बैच फ़ाइल में %% का उपयोग करें: %% के लिए i (* .ext) मेरे-फ़ंक्शन %% i – Emile

2

स्वतंत्र रूप से फाइल या निर्देशिका के छोरों कर ई देखते हैं। जी। Batch script loop,। Btw। एमएस मदद भी मदद करनी चाहिए (लेकिन जो वहाँ खोदता)

+0

अपने पसंदीदा डॉस/जीत खोल में "सहायता" के आउटपुट को पढ़ें। यह सब बताएगा। (और यदि ऐसा नहीं होता है, तो "के लिए" मौजूद नहीं है।) –

+0

लिंक के लिए धन्यवाद, भले ही यह सीधे ओपी का जवाब न दे, यह प्रश्न शीर्षक का उत्तर देता है –

3

इससे आपको यह जानने के लिए ... इस प्रकार Batch script loop

मेरा जवाब है जो खोज रहे हैं मदद मिल सकती है:

@echo off 
:start 
set /a var+=1 
if %var% EQU 100 goto end 
:: Code you want to run goes here 
goto start 

:end 
echo var has reached %var%. 
pause 
exit 

पहले स्टार्ट लेबल लूप के तहत आदेशों का सेट एक चर तक,% var% 100 तक पहुंच जाता है। एक बार ऐसा होने पर यह आपको सूचित करेगा और आपको बाहर निकलने की अनुमति देगा। इस कोड 17 के लिए 100 बदल रहा है और अपने कोड डालने या एक कॉल आदेश बैच फ़ाइल के पथ (Shift + फ़ाइल पर राइट क्लिक करें और "पथ के रूप में कॉपी" का चयन करें) जहां टिप्पणी रख दिया गया है, जिसके बाद का उपयोग करके अपनी आवश्यकताओं के लिए अनुकूलित किया जा सकता है।

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