2012-12-02 45 views
5

इस कोड:इस बैच फ़ाइल में °, ± और ² ░, ▒ और ▓ का उत्पादन कैसे करता है?

@echo off 
    set /p a=Installing [<nul 
    set b=1 
    :loop 
    if %b% leq 2 set /p a=°<nul 
    if %b% gtr 4 if %b% leq 6 set /p a=±<nul 
    if %b% gtr 6 if %b% leq 8 set /p a=²<nul 
    if %b% gtr 8 if %b% leq 10 set /p a=±<nul 
    if %b% gtr 10 set /p a=°<nul 
    choice /t 1 /c y /d y>nul 
    set /a b=%b%+1 
    if %b%==13 (echo ]&goto :eof) 
    goto :loop 

... http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_1237-DOS-ECHO-text-to-previous-line-by-Paul-Tomasi.html#c18182 से आया है और एक cmd विंडो में नीचे उत्पादन का उत्पादन:

Installing [░░▒▒▓▓▒▒░░] 

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

यदि कोई भी इस तरह की cmd/cmd प्रोग्राम की सुविधाओं के बारे में अधिक जानने के लिए एक अच्छी वेबसाइट का सुझाव दे सकता है, तो इसकी सराहना की जाएगी।

+0

क्या टीआई [सीएमडी का उपयोग कर रहे फ़ॉन्ट के कारण हो सकता है?] (Http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using) – acattle

+0

वास्तव में नहीं उत्तर, लेकिन अभी भी दिलचस्प: कमांड लाइन से अपनी बैच फ़ाइल पर 'टाइप'' चलाने का प्रयास करें, जैसा कि 'mybatchfile.bat' टाइप करें'। मेरा टेक्स्ट एडिटर '±' और बाकी सभी दिखाता है, लेकिन 'टाइप' कमांड' ░' और बाकी दिखाता है। बैच फ़ाइल में '░' डालकर 'टाइप' के रूप में टाइप करें। 'एडिट' कमांड लाइन एडिटर विंडोज़ के बजाए कमांड लाइन अक्षरों को भी दिखाता है। शायद एक फ़ॉन्ट चीज, जैसा कि एसिटल के लिंक से पता चलता है। – user1201210

+0

@acattle - मैंने cmd (रास्टर फोंट्स) में मेरे लिए उपलब्ध तीन फोंट की कोशिश की है, उपर्युक्त परिणाम एक पर आधारित थे; अब भी कंसोलस और लुसीडा कंसोल); कंसोलस के पास डिग्री के लिए एक खाली चरित्र था, और दोनों और लुसीडा कंसोल ने कमांड को दूसरी ± (असामान्य रूप से) के लिए गलत त्रुटि दी। यह देखते हुए कि यह cmd है और एक शब्द प्रोसेसर नहीं है (उदाहरण के लिए) इसमें संदेह होगा कि प्रत्येक फ़ॉन्ट के लिए वर्णमाला में अलग-अलग वर्ण होंगे, समान संबंधित वर्णमाला वर्णों का सिर्फ अलग दिखना होगा। – user66001

उत्तर

4

ऐसा इसलिए है क्योंकि आपका संपादक एक डॉस और कमांड लाइन उपयोग से एक अलग एन्कोडिंग का उपयोग करता है।

पात्रों यहां 176-178 देखें:

कॉलम डॉस और विन में

http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ext-pc.htm

चरित्र जोड़े एक ही संख्यात्मक मानों का प्रतिनिधित्व कर रहे हैं, लेकिन डॉस (और इसलिए कमांड लाइन) और Windows (अपने पाठ संपादक) इन संख्याओं को विभिन्न प्रतीकों के रूप में प्रदर्शित करें।

यदि यह स्पष्ट नहीं है: आपकी टेक्स्ट फ़ाइल बाइट्स (संख्याओं) की एक श्रृंखला है और इन बाइट्स में से एक मान 176 है। डॉस code page 437 के तहत यह ऐतिहासिक कारणों से ▓ ग्लाइफ और कमांड लाइन को इंगित करता था, इसका उपयोग करता है डीओएस के रूप में एक ही एन्कोडिंग। लेकिन विंडोज़ पर चल रहे आपका टेक्स्ट एडिटर, पुराने Windows-1252 एन्कोडिंग का उपयोग करके फ़ाइल को स्पष्ट रूप से पढ़ता है, जहां 176 का मतलब है °।

आप 437 का समर्थन करने वाले एक संपादक को खोजने का प्रयास कर सकते हैं, यह आपको इस तरह के भ्रम से बचाएगा।

+0

धन्यवाद @ kamilk - अब मैं समझता हूं। कुछ अनुवर्ती प्रश्न, हालांकि - 1) क्या यह बताने के लिए वैसे भी है कि कौन से प्रोग्राम (cmd.exe, और नोटपैड की तरह) कोड पेज के रास्ते में उपयोग कर रहे हैं? 2) मुझे लगता है कि फोंट कोड पृष्ठों से बंधे हैं, यह बताते हुए कि सीएमडी विंडो में इस्तेमाल किया गया वही फ़ॉन्ट नोटपैड में एक ही फ़ॉन्ट से अलग था? और अंत में, 3) किसी भी विचार पर मुझे "आदेश का वाक्यविन्यास गलत क्यों है" for के लिए उनमें से किसी एक को प्रतिस्थापित करते समय (जो, कारणों के लिए मुझे समझ में नहीं आता है, जो Alt + 240 द्वारा प्राप्त नहीं हो सकता है मुझे Win7 पर चल रहे नोटपैड में सी और पी के लिए) – user66001

+0

... लेकिन मुझे - WinXP में नोटपैड पर देता है) – user66001

+0

ATTN @kamilk - यदि आप मेरे और अन्य के लिए अतिरिक्त प्रश्नों को संबोधित कर सकते हैं, तो अपने सही उत्तर को चिह्नित करने के लिए खुश भविष्य का लाभ – user66001