2013-10-28 7 views
11

तो .. यह (मुझे वैसे भी) इस कार्यक्रम की सबसे महत्वपूर्ण विशेषता है। मुझे यह काम करने की ज़रूरत है। कृपया हंसी नहीं .. (ठीक आप हँसते कर सकते हैं), लेकिन मेरे कार्यक्रम त्रुटियों, मैं इसे इस प्रदर्शित करना चाहते हैं जब:मैं ASCII कला को कैसे प्रतिबिंबित करता हूं जिसमें बैच फ़ाइल में विशेष वर्ण होते हैं?

  _ _,---._ 
     ,-','  `-.___ 
     /-;'    `._ 
    /\/   ._ _,'o \ 
    (/\  _,--'\,','"`.) 
    |\  ,'o  \' //\ 
    |  \  / ,--'""`-. 
    :  \_ _/ ,-'   `-._ 
     \  `--'/    ) 
     `. \`._ ,'  ________,',' 
     .--`  ,' ,--` __\___,;' 
      \`.,-- ,' ,`_)--' /`.,' 
      \(; | |)  (`-/ 
      `--'| |)  |-/ 
       | | |  | | 
       | | |,.,-. | |_ 
       | `.//)---` ) 
       _|/ ,', ,-' 
      ,'|_( /-<._,' |--, 
      | `--'---.  \/ \ 
      |  /\ /\ \ 
      ,-^---._  | \/\ \ 
     ,-'  \----' \/ \--`. 
    /   \    \ \ 

प्रत्येक पंक्ति काम नहीं करता गूंज ...

echo    _ _,---._ 
echo   ,-','  `-.___ 
echo   /-;'    `._ 
echo   /\/   ._ _,'o \ 
echo  (/\  _,--'\,','"`.) 
echo   |\  ,'o  \' //\ 
echo   |  \  / ,--'""`-. 
echo   :  \_ _/ ,-'   `-._ 
echo   \  `--'/    ) 
echo   `. \`._ ,'  ________,',' 
echo    .--`  ,' ,--` __\___,;' 
echo    \`.,-- ,' ,`_)--' /`.,' 
echo    \(; | |)  (`-/ 
echo     `--'| |)  |-/ 
echo     | | |  | | 
echo     | | |,.,-. | |_ 
echo     | `.//)---` ) 
echo     _|/ ,', ,-' 
echo     ,'|_( /-<._,' |--, 
echo     | `--'---.  \/ \ 
echo     |  /\ /\ \ 
echo    ,-^---._  | \/\ \ 
echo   ,-'  \----' \/ \--`. 
echo   /   \    \ \ 

मुझे लगता है कि यह पाठ में प्रतीकों की वजह से है। इसे ठीक करने का कोई तरीका? या मुझे "डीओएच" स्क्रीन पर छोड़ने की ज़रूरत है?

उत्तर

10

एक फ़ाइल (doh.txt) में स्टोर छवि। बैच फ़ाइल में type doh.txt

::: 
:::    _ _,---._ 
:::   ,-','  `-.___ 
:::   /-;'    `._ 
:::   /\/   ._ _,'o \ 
:::  (/\  _,--'\,','"`.) 
:::   |\  ,'o  \' //\ 
:::   |  \  / ,--'""`-. 
:::   :  \_ _/ ,-'   `-._ 
:::   \  `--'/    ) 
:::   `. \`._ ,'  ________,',' 
:::    .--`  ,' ,--` __\___,;' 
:::    \`.,-- ,' ,`_)--' /`.,' 
:::    \(; | |)  (`-/ 
:::     `--'| |)  |-/ 
:::     | | |  | | 
:::     | | |,.,-. | |_ 
:::     | `.//)---` ) 
:::     _|/ ,', ,-' 
:::     ,'|_( /-<._,' |--, 
:::     | `--'---.  \/ \ 
:::     |  /\ /\ \ 
:::    ,-^---._  | \/\ \ 
:::   ,-'  \----' \/ \--`. 
:::   /   \    \ \ 
::: 

for /f "delims=: tokens=*" %%A in ('findstr /b ::: "%~f0"') do @echo(%%A 

छवि स्क्रिप्ट के भीतर कहीं भी रखा जा सकता है:

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद। मैं वास्तव में cmd ​​प्रॉम्प्ट में ASCII को लोड करना पसंद करूंगा, क्योंकि यह त्रुटि के बाद उपयोगकर्ता को इनपुट के लिए संकेत देने जा रहा है। – user2863294

+0

@ user2863294 - आपकी टिप्पणी मुझे समझ में नहीं आती है। TYPE का उपयोग करके फ़ाइल सामग्री को प्रिंट करने के बाद आपकी बैच स्क्रिप्ट उपयोगकर्ता को त्रुटि के लिए संकेत दे सकती है। – dbenham

+0

ओएच! मैं एक टैबलेट पर था और मुझे नहीं पता था कि "टाइप" कमांड का हिस्सा था! प्रतिभाशाली! – user2863294

0
@echo off 
echo    _ _,---._ 
echo   ,-','  `-.___ 
echo   /-;'    `._ 
echo   /\/   ._ _,'o \ 
echo  (/\  _,--'\,','"`.) 
echo   ^|\  ,'o  \' //\ 
echo   ^|  \  / ,--'""`-. 
echo   :  \_ _/ ,-'   `-._ 
echo   \  `--'/    ) 
echo   `. \`._ ,'  ________,',' 
echo    .--`  ,' ,--` __\___,;' 
echo    \`.,-- ,' ,`_)--' /`.,' 
echo    \^(; ^| ^|)  ^(`-/ 
echo     `--'^| ^|^)  ^|-/ 
echo     ^| ^| ^|  ^| ^| 
echo     ^| ^| ^|,.,-. ^| ^|_ 
echo     ^| `.//)---` ) 
echo     _^|/ ,', ,-' 
echo     ,'^|_( /-^<._,' ^|--, 
echo     ^| `--'---.  \/ \ 
echo     ^|  /\ /\ \ 
echo    ,-^---._  ^| \/\ \ 
echo   ,-'  \----' \/ \--`. 
echo   /   \    \ \ 

http://www.robvanderwoude.com/escapechars.php

15

अपनी स्क्रिप्ट में निम्नलिखित को शामिल करें। इसे फोर स्टेटमेंट के पास होने की आवश्यकता नहीं है। मैंने ::: को प्रत्येक छवि रेखा के लिए एक विशिष्ट लेबल के रूप में चुना क्योंकि : सामान्य लेबल के लिए उपयोग किया जाता है, और :: अक्सर टिप्पणी के रूप में उपयोग किया जाता है।

2014-10-22 अपडेट

वहाँ एक भी सरल मेरी REPL.BAT utility का उपयोग कर समाधान है - एक संकर JScript/बैच स्क्रिप्ट है कि एक regex खोज करता है/stdin पर की जगह और stdout के लिए परिणाम लिखता है। सीधे शब्दों में ऊपर के लिए बयान के लिए निम्न पंक्ति स्थानापन्न:

call repl "^:::" "" a <"%~f0" 

REPL.BAT कि आगे XP से किसी भी Windows मशीन पर चलेंगे शुद्ध स्क्रिप्ट है। पूर्ण दस्तावेज स्क्रिप्ट के भीतर एम्बेडेड है। यह समाधान A विकल्प का उपयोग केवल तभी मुद्रित करने के लिए करता है जो बदले गए थे।

4

काम करने के लिए आपको विशेष पात्रों (जैसे |, पाइप रीडायरेक्शन के लिए उपयोग किया जाता है) से बचने की आवश्यकता है।

हालांकि, echo का उपयोग करते समय सभी विशेष बैच पात्रों को बचने की आवश्यकता नहीं है, जैसा कि कुछ पाठ के रूप में व्याख्या किया गया है।लोगों को आप अभी भी उन्हें कैसे से बचने के लिए भागने की जरूरत है, और कर रहे हैं:

% = %%

^ = ^^

& = ^&

< = ^<

> = ^>

| = ^|

और, यदि देरी विस्तार सक्षम है:

! = ^^!

3
cat << "EOF" 
      _ _,---._ 
     ,-','  `-.___ 
     /-;'    `._ 
    /\/   ._ _,'o \ 
    (/\  _,--'\,','"`.) 
    |\  ,'o  \' //\ 
    |  \  / ,--'""`-. 
    :  \_ _/ ,-'   `-._ 
     \  `--'/    ) 
     `. \`._ ,'  ________,',' 
     .--`  ,' ,--` __\___,;' 
      \`.,-- ,' ,`_)--' /`.,' 
      \(; | |)  (`-/ 
      `--'| |)  |-/ 
       | | |  | | 
       | | |,.,-. | |_ 
       | `.//)---` ) 
       _|/ ,', ,-' 
      ,'|_( /-<._,' |--, 
      | `--'---.  \/ \ 
      |  /\ /\ \ 
      ,-^---._  | \/\ \ 
     ,-'  \----' \/ \--`. 
    /   \    \ \ 
EOF 
-1
echo this one works 
echo '    ***  *** 
echo    *  * *  * 
echo    * * * * 
echo     *** * **** 
echo     *  * 
echo     * 0 0 * 
echo     * ! * 
echo     *   * 
echo     * ~~~ * 
echo     *   * 
echo   ======   ====== 
echo   ======   ====== 
echo  ======      ====== 
echo  ======      ====== 
+0

क्या यह ओपी निर्दिष्ट है? – SteveFest

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