2013-03-22 13 views
18

के माध्यम से सीमा पर लूप के लिए डॉस के लिए मैं एक डॉस विंडो से कई बार एक ऑपरेशन करना चाहता हूं। सामान्य ज्ञान मुझे बताता है कि लूप के लिए एक डॉस इसे संभालने में सक्षम होना चाहिए। सुनिश्चित करें कि पर्याप्त है, अगर मैं निष्पादित करने के लिए, कहते हैं, myProg.exe चाहते हैं, मैं एक कमांड विंडो खोलने के लिए और उपयोग कर सकते हैं:कमांड लाइन

C:\> FOR %i in (1 2 3) DO myProg.exe 

आसान।

लेकिन अगर मैं myProg.exe 1000 बार निष्पादित करना चाहता हूं तो क्या होगा? मैं फोर लूप में एक रेंज निर्दिष्ट करना चाहता हूं, लेकिन मुझे यह देखने में परेशानी हो रही है कि यह कैसे करें।

Intuitively, ऐसा लगता है जैसे मैं निम्न में से एक की तरह कुछ करने के लिए सक्षम होना चाहिए:

C:\> FOR %i in (1 to 1000) DO myProg.exe 
C:\> FOR %i in (1-1000) DO myProg.exe 

लेकिन, बेशक, यह काम नहीं करता। फॉर लूप क्रमश: 3 टोकन और 1 टोकन के रूप में सूची को व्याख्या करता है, इसलिए myProg.exe क्रमशः 3 बार और 1 बार निष्पादित किया जाता है।


बैच फ़ाइल समाधान

यह शायद बैच के कुछ प्रकार लिखना आसान हो जाएगा (.bat) फ़ाइल:

SET COUNT=0 
:MyLoop 
    IF "%COUNT%" == "1000" GOTO EndLoop 
    myProg.exe 
    SET /A COUNT+=1 
    GOTO MyLoop 
:EndLoop 

लेकिन वहाँ एक आसान तरीका करने के लिए नहीं है कमांड लाइन से ऐसा करें?

+0

[बैच स्क्रिप्ट पाश] (http://stackoverflow.com/questions/2591758/batch-script-loop) – LittleBobbyTables

+0

धन्यवाद y के संभावित डुप्लिकेट काम करने के लिए

एक और% चिह्न जोड़ने कहां। मैं इसे पोस्ट करने से पहले इसे खोजने में सक्षम नहीं था - शायद शीर्षक के कारण। फिर भी, धन्यवाद! – Kirby

उत्तर

34

आप संख्याओं के एक सेट के माध्यम से इसे लूप बनाने के लिए अपने कथन में/एल टैग का उपयोग कर सकते हैं।

उदाहरण के लिए।

C:\> FOR /l %i in (1,1,1000) DO myProg.exe

यह कहते रेंज के माध्यम से लूप 1 से शुरू करके, एक समय में कदम 1, 1000

http://ss64.com/nt/for_l.html

6

तक के लिए/एल %% मैं में (1,1,100) कर गूंज% % से पहले मैं

+3

ध्यान दें कि डबल बैच केवल बैच स्क्रिप्ट में ठीक से काम करने के लिए आवश्यक है। कमांड लाइन पर काम करने के लिए एकल% आवश्यक है। – scenia