विंडोज बैट स्क्रिप्ट में 1 से n तक की लूप काउंटिंग के लिए


25

मुझे एक बैट स्क्रिप्ट फ़ाइल के भीतर n बार एक विंडोज़ कमांड चलाने की आवश्यकता है। मुझे पता है कि यह विभिन्न प्रोग्रामिंग भाषाओं में कैसे किया जाता है, लेकिन इसे विंडोज़ कमांड लाइन पर सही तरीके से प्राप्त करने का प्रबंधन नहीं किया जा सकता है :-(

मुझे भी कुछ उम्मीद होगी

for(int i = 0; i < 100; i++) {
   // do something
}

या यह भी (हालांकि पूरी तरह से गंभीरता से नहीं)

1.upto(100, {
   // do something
}) 

धन्यवाद!

संपादित करें

मैं जावा, पर्ल, सी या जो कुछ भी इस तरह दिखता है एक बैट स्क्रिप्ट उत्पन्न करेगा में एक कार्यक्रम लिख सकता हूं

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

और इसी तरह। या यहां तक ​​कि "बेहतर":

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

और फिर इसे अमल ... लेकिन बात यह है कि मैं एक संक्षिप्त तरीके के माध्यम से पुनरावृति संख्या की श्रेणी निर्दिष्ट करने की आवश्यकता है के भीतर स्क्रिप्ट।

धन्यवाद!


1
यहाँ उत्तर पूरी तरह से अच्छे हैं, लेकिन भगवान के प्यार के लिए ... बैच? वास्तव में? मैं अत्यधिक आधुनिक भाषा में जाने की सलाह दूंगा।
ईबीग्रीन

ऐसा लगता है जैसे वह इस मामले में एक विकल्प मिल गया है ध्वनि नहीं है।
wolfgangsz

मैंने ऐसा कुछ नहीं देखा है जिसका अर्थ है कि कोई विकल्प नहीं है। तथ्य की बात के रूप में वह कहता है कि वह "जो भी" भाषा में लिख सकता है, इसलिए मैं कहूंगा कि आगे की जानकारी के बिना ऐसा लगता है जैसे उसके पास एक विकल्प है।
ईबीग्रीन

दोस्तों, मुझे कोड को तैनात करने की आवश्यकता है जो एक आधुनिक भाषा में एक स्क्रिप्ट द्वारा लिखी गई है ...
raoulsson

1
यह आवश्यक है या नहीं - कभी-कभी यह नौकरी के लिए सही उपकरण है। आप पॉवरशेल की गारंटी नहीं दे सकते हैं, अकेले बेश, पाइथन, पर्ल, इत्यादि को विंडोज एक्सपी या 2003 सर्वर बॉक्स पर स्थापित किया जा सकता है। बैच एक पूरी तरह से स्वीकार्य समाधान है।
18

जवाबों:


44

आप इसे इस तरह से कर सकते हैं:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

1,1,5 को डिकोड किया गया है:

(start,step,end)

यह भी ध्यान दें, यदि आप इसे बैच फ़ाइल में एम्बेड कर रहे हैं, तो आपको अपने चर को उपसर्ग करने के लिए डबल प्रतिशत चिह्न (%%) का उपयोग करना होगा, अन्यथा कमांड दुभाषिया लूप को चलाने से पहले चर% i का मूल्यांकन करने का प्रयास करेगा।


3
"ईसीएचओ स्टार्ट ऑफ लूप" प्रत्येक कदम पर निष्पादित किया जाएगा, न कि केवल शुरुआत।
अगली सूचना तक रोक दिया गया।

1
इसके अलावा, एक @संकेत का उपयोग कमांड के मुद्रण को दबा देगा क्योंकि वे कमांड लाइन से निष्पादित होते हैं। "... डीओ @ (...)
अगली सूचना तक रोका गया।

यह "फॉर" के बाद केवल / एल के साथ काम करता है। यही कारण है कि?
raoulsson 14

1
क्या एक के लिए /? और आप पाएंगे: For / L% वैरिएबल IN (स्टार्ट, स्टेप, एंड) DO कमांड [कमांड-पैरामीटर्स] यह सेट स्टेप राशि से शुरू से अंत तक संख्याओं का एक क्रम है। तो (1,1,5) अनुक्रम 1 2 3 4 5 उत्पन्न करेगा और (5, -1,1) अनुक्रम उत्पन्न करेगा (5 4 3 2 1)
EBGreen

%%iअपने पाठ में उपयोग करना और टिप्पणी जोड़ना बेहतर है कि यह %iकमांड लाइन पर सीधे निष्पादन के लिए है। अधिकांश उपयोगकर्ता BAT फ़ाइल में इसका परीक्षण करेंगे और इस कारण को खोजने का प्रयास करेंगे कि उन्हें त्रुटि क्यों मिलती है (मेरी तरह)।
.६


6

सीधे कमांड लाइन से:

for /L %n in (1,1,100) do @echo %n

बैच फ़ाइल का उपयोग करना:

@echo off
for /L %%n in (1,1,100) do echo %%n

प्रदर्शित करता है:

1
2
3
...
100

क्या होगा यदि संख्या अनुक्रम 0001 से 00100+ आदि है?
nwgat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.