दिलचस्प पोस्ट
कैसे नेस्टेड ऊर्ध्वाधर मार्जिन काम collapses? नेस्टेड शब्दकोश आइटम चाबियों की सूची के माध्यम से एक्सेस करें? उम्मीद के मुताबिक यादृच्छिक जनरेटर के लिए आवश्यक है डबल क्यों होता है। एनएएन == डबल। एनएएन झूठी वापसी क्यों करता है? mysql2 मणि ​​गलत mysql ग्राहक पुस्तकालय के लिए संकलित __builtin_offsetof ऑपरेटर का उद्देश्य और वापसी प्रकार क्या है? जैक्सन का उपयोग करते हुए मैं ऑब्जेक्ट में कच्चे JSON को कैसे शामिल कर सकता हूं? फेसबुक शेयर बटन और कस्टम पाठ मेल खाता समूह के संदर्भ में जावास्क्रिप्ट की जगह है? एक गो प्रोग्राम में स्थिर संसाधनों का बंडल करने का सबसे अच्छा तरीका क्या है? क्या सी ++ में एक सभ्य प्रतीक्षा समारोह है? ग्रिडविव्यू के साथ दो कॉलम और ऑटो रीसाइज किए गए छवियां जैक्सन और सामान्य प्रकार संदर्भ एसटीएल सॉर्ट फ़ंक्शन का उपयोग करके सॉर्ट करें पाइपों के उपयोग से दो कार्यक्रमों के बीच एक साधारण स्ट्रिंग कैसे भेजनी है?

बीएटी सरणी में डीआईआर आउटपुट?

क्या 'डायरे' कमांड के आउटपुट में किसी बैट फ़ाइल में एक सरणी में पढ़ने का कोई तरीका है? या मुझे पहली बार फाइल में इसे आउटपुट करने की आवश्यकता होगी, फिर फाइल को पढ़कर फ़ाइल को हटा दें?

उद्देश्य एक निर्देशिका में फ़ोल्डर्स की सूची प्राप्त करना है, प्रत्येक के लिए एक संख्या जोड़ना और फिर उपयोगकर्ता को एक संख्यात्मक इनपुट के लिए एक फ़ोल्डर का चयन करने के लिए संकेत दें

अद्यतन: यह मिल गया!

SETLOCAL EnableDelayedExpansion SET /A c=1 FOR /F "tokens=*" %%F in ('dir /on /b /a:d /p %svnLOCAL%') DO ( ECHO !c!. %%F SET dir_!c!=%%F SET /ac=c+1 ) REM test array ECHO !dir_4! ENDLOCAL 

वेब के समाधान से एकत्रित समाधान "बीएटी सरणी में डीआईआर आउटपुट?"

बैच औपचारिक रूप से सरणियों का समर्थन नहीं करता है, लेकिन आप वातावरण चर का उपयोग कर arrays का अनुकरण कर सकते हैं।

 @echo off setlocal enableDelayedExpansion ::build "array" of folders set folderCnt=0 for /f "eol=: delims=" %%F in ('dir /b /ad *') do ( set /a folderCnt+=1 set "folder!folderCnt!=%%F" ) ::print menu for /l %%N in (1 1 %folderCnt%) do echo %%N - !folder%%N! echo( :get selection set selection= set /p "selection=Enter a folder number: " echo you picked %selection% - !folder%selection%! 

ऊपर दिए गए कोड में, "सरणी" तत्वों को फ़ोल्डर 1, फ़ोल्डर 2, फ़ोल्डर 3 नाम दिया गया है …

कुछ लोग फ़ोल्डर [1], फ़ोल्डर [2], फ़ोल्डर [3] … जैसे नाम का उपयोग करते हैं। यह निश्चित रूप से अधिक सरणी दिखता है, लेकिन यह ठीक यही है कि मैं ऐसा क्यों नहीं करता। जो लोग बैच के बारे में बहुत कुछ नहीं जानते हैं वे वैरिएबल को देखते हैं और बैच मानते हैं कि सरणी का समर्थन करता है।

उपरोक्त समाधान ठीक से काम नहीं करेगा यदि फ़ोल्डर नामों में से कोई भी शामिल है ! चरित्र – विलंबित विस्तार के कारण %% F चर के विस्तार के दौरान फ़ोल्डर का नाम दूषित हो जाएगा। एक काम है-इसमें विलंबित विस्तार को चालू और बंद करने के लिए शामिल किया गया है, लेकिन जब तक इसकी आवश्यकता नहीं है, तब तक इसमें शामिल होना उचित नहीं है।

यह एक जवाब नहीं है, लेकिन डीबेनहम के उत्तर के उत्तर के रूप में एक बड़ी टिप्पणी है।

इस मामले के बारे में मेरा दृष्टिकोण निश्चित रूप से डीबेनहम्स के विपरीत है। मेरी राय में, बैच विषयों के उत्तर में हमें बहुत संक्षिप्त और स्पष्ट होना चाहिए, खासकर शुरुआती लोगों के साथ, और समस्या को हल करने के लिए न्यूनतम सहायता प्रदान की जाती है, लेकिन जवाब को भ्रमित करने और उत्तर उलझाने के लिए नहीं। बैच में दो तरह के अनुरुप एरेज़ हैं: व्यापक रूप से उपयोग किए गए वर्ग कोष्ठक के माध्यम से सबस्क्रिप्ट को संलग्न करने के लिए, या नहीं, लेकिन दोनों ही मामलों में अवधारणा एक समान है: एक संख्या का सूचकांक के माध्यम से समान नाम वाले वेरिएबल्स की सूची से एक संख्यात्मक इंडेक्स ।

यदि वर्ग कोष्ठक का उपयोग नहीं किया जाता है, तो एक शुरुआत मुख्य अवधारणा को समझ नहीं पाती; इसके बजाय वे सोच सकते हैं कि बैच फ़ाइल ने समस्या को हल करने के लिए एक "अजीब चाल" का उपयोग किया। एक अनुभवी प्रोग्रामर, दूसरी ओर, निश्चित रूप से कहेंगे: "हे! यह एक सरणी है, लेकिन एक अलग तरीके से लिखा"। इस सुविधा को किसी भी अन्य चीज़ के लिए गलती का कोई रास्ता नहीं है, और उसे किसी अन्य चीज के रूप में छिपाने का कोई कारण नहीं है।

यदि वर्ग कोष्ठक का उपयोग किया जाता है, तो शुरुआत करने वाले को कई प्रोग्रामिंग भाषाओं में "विषय" की अवधारणा और इस विषय पर बहुत सारे उदाहरणों के बारे में जानकारी मिलती है, और यहां तक ​​कि किसी भी प्रोग्रामिंग भाषा से स्वतंत्र वर्णन भी हो सकता है, जो निश्चित रूप से, बैच फ़ाइलों में तात्कालिक उपयोग के हैं । इस मामले में चौकोर ब्रैकेट का उपयोग इतना अधिक स्पष्ट है कि यह ऐसा नहीं करता। हालांकि, कुछ लोग सोचते हैं कि ये लाभ बैच "औपचारिक रूप से सरणियों का समर्थन" मानते हुए "भ्रम" के लायक नहीं हैं।

मेरी राय में, इस मामले का केंद्रीय बिंदु अगर बैच औपचारिक रूप से सरणियों का समर्थन नहीं करता है या नहीं, परन्तु तथ्य यह है कि किसी भी व्यक्ति बैच फ़ाइलों में डेटा को हेरफेर करने के लिए सरणी अवधारणा का उपयोग कर सकते हैं । मुझे संभावना है कि कुछ लोगों को लगता है कि बैच ठीक तरह से सरणियों का समर्थन, विशेषकर शुरुआती लोगों के साथ कोई भी समस्या नहीं दिखाई देगी; सरणी प्रबंधन अलग-अलग प्रोग्रामिंग भाषाओं में अलग है, इसलिए बैच विवरण का स्पष्टीकरण आवश्यक होगा। हालांकि, अगर इस विषय की अधिक औपचारिक चर्चा जरूरी होगी, तो मैं एक अलग उदाहरण बताऊंगा।

क्या आप जानते हैं कि सी प्रोग्रामिंग भाषा किसी भी इनपुट-आउटपुट ऑपरेशन के "औपचारिक रूप से समर्थन" नहीं करती है? जब डेनिस रिची ने इसे तैयार किया, तो उन्होंने विशेष रूप से भाषा के डिजाइन के बाहर इन कार्यों को छोड़ा ताकि संकलक छोटे और कॉम्पैक्ट बनाए रख सकें। क्या इसका मतलब यह है कि आप सी प्रोग्राम में कोई डेटा पढ़ा / लिख सकते हैं? बिलकूल नही! इसका मतलब यह है कि इन कार्यों को कार्यात्मक पुस्तकालयों के जरिए कंपाइलर के बाहर लागू किया जाता है, इसलिए यदि आपको सी संकलक को विकसित करने की आवश्यकता हो, तो आपको प्रिंटर, रीड या किसी अन्य I / O कथन को संकलित करने के बारे में चिंता करने की जरूरत नहीं है क्योंकि वे अभी मौजूद नहीं हैं सी भाषा में!

दिलचस्प है, है ना?

इसलिए, यदि कोई शुरुआतकर्ता पूछता है: "सी भाषा में संदेश कैसे लिखना है?", क्या आपको लगता है कि सही जवाब होना चाहिए: "आप नहीं कर सकते। सी भाषा औपचारिक रूप से किसी भी आई / ओ वक्तव्य का समर्थन नहीं करती है, लेकिन आप लाइब्रेरी फ़ंक्शंस के जरिए ऐसी कार्रवाइयों का अनुकरण करना " बिलकूल नही! अधिकांश लोग सिर्फ printf का वर्णन करने का जवाब देंगे, लेकिन व्यावहारिक रूप से कोई भी यह नहीं बताता है कि printf () सी भाषा का हिस्सा नहीं है और मुझे लगता है कि यह सही है परम विश्लेषण में, समस्या क्या है अगर कोई सोच सकता है कि सी भाषा आई / ओ ऑपरेशन का समर्थन करती है? लोग सी प्रोग्रामों में आई / ओ ऑपरेशन्स का उपयोग कर सकते हैं, चाहे वे लागू किए गए हों, ठीक?

ठीक है, मेरी विनम्र राय में, बैच में एरे के मामले में एक ही दृष्टिकोण का उपयोग किया जाना चाहिए।

शायद यह एक करीब उदाहरण है: "बैच में अंकगणित संचालन" के बारे में बहुत सारे सवाल हैं और उत्तर आमतौर पर है: " set /A कमांड का उपयोग करें"। मैंने कभी कोई जवाब नहीं देखा जो "संकेत करता है कि बैच की फ़ाइलें सांख्यिक चर का समर्थन नहीं करती हैं, सिर्फ तार करती हैं, लेकिन अंकगणितीय संचालन कई तरह से, जैसे set /A कमांड का अनुकरण किया जा सकता है"। क्यूं कर? ऐसा लगता है कि शुद्धिकारक "अधिक शुद्धवादी" हैं जब वे बैच में सरणियों के बारे में सोचते हैं, लेकिन वे अन्य विषयों की परवाह नहीं करते हैं, जैसे संख्याएं मैं वास्तव में "बैच सरणियों का समर्थन नहीं करता" के बारे में अक्सर स्पष्टीकरण के उद्देश्य को समझ नहीं पा रहा हूं! SO उपयोगकर्ता rojo इस बिंदु के बारे में राय: "यह एक दयनीय बहस है जो समस्याओं के समाधानकर्ताओं को हल करने की कोशिश कर रहे हैं कोई हल प्रदान करता है" ( इस उत्तर से ऊपर उसकी पूरी टिप्पणी देखें)।

एंटोनियो