如何在批处理文件中回显包含特殊字符的ASCII艺术?

29

那么,对我来说(不管别人怎么想),这是该程序最重要的功能。我需要它能够正常工作。请不要笑...(好吧,你可以笑)但是当我的程序出现错误时,我希望它能显示如下内容:

          _ _,---._ 
       ,-','       `-.___ 
      /-;'               `._ 
     /\/          ._   _,'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           /            \              \   \ 

我认为这是因为文本中的符号导致的。有没有什么办法可以解决?还是我需要放弃“DOH”屏幕?

6个回答

26

请在您的脚本中包含以下内容:


Translated:

Please include the following content in your script:

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

for /f "delims=: tokens=*" %%A in ('findstr /b ::: "%~f0"') do @echo(%%A
图像可以放置在脚本的任何位置。它不需要靠近FOR语句。我选择:::作为每个图像行的区分标签,因为:用于普通标签,而::经常用作注释。 2014-10-22更新 使用我的REPL.BAT实用程序,可以使用更简单的解决方案-这是一个混合JScript/batch脚本,可对stdin执行正则表达式搜索/替换,并将结果写入stdout。只需用以下行替换上面的FOR语句即可:
call repl "^:::" "" a <"%~f0"

REPL.BAT是一个纯脚本,可以在任何从XP开始的Windows机器上运行。完整文档嵌入在脚本中。此解决方案使用A选项仅打印更改的行。


20

将图像存储到文件中(doh.txt),然后在批处理文件中输入type doh.txt


谢谢您的快速回复。我真的希望它能在cmd提示符中加载ASCII,因为它会在错误后提示用户输入。 - user2863294
@user2863294 - 我不理解你的评论。你的批处理脚本可以使用TYPE将文件内容打印到屏幕上后,简单地提示用户出现错误。 - dbenham
哦!我在平板电脑上,没有意识到“type”是命令的一部分!太棒了! - user2863294
对我没用,但是 cat doh.txt 可以。 - sizzle

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

7
你需要转义特殊字符(例如用于管道重定向的|),以使其正常工作。
但是,使用echo时,并不需要转义所有特殊的批处理字符,因为有些被解释为文本。你仍然需要转义的特殊字符,以及如何转义它们,包括: % = %% ^ = ^^ & = ^& < = ^< > = ^> | = ^| 如果启用了延迟扩展: ! = ^^!

2
@echo off
::: Prepare le processeur de commande
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
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       ^/            ^\              ^\   ^\
PAUSE
EXIT

-6
echo this one works
echo '                ***     ***
echo                *     * *     *
echo                *    *   *    *
echo                 *** *    ****
echo                   *       *
echo                  *  0   0  *
echo                  *    !    *
echo                  *         *
echo                  *   ~~~   *
echo                  *         *
echo            ======           ======
echo            ======           ======
echo      ======                       ======
echo      ======                       ======

3
这是 OP 指定的吗? - user6250760

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接