Как эхо 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           /            \              \   \ 

Я предполагаю, что это из-за символов в тексте. Любой способ исправить это? Или мне нужно отказаться от экрана "DOH"?

Ответ 1

Сохраните изображение в файле (doh.txt). Затем type doh.txt в пакетном файле.

Ответ 2

Включите следующее в script:

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

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

Изображение может быть размещено в любом месте script. Он не должен находиться рядом с оператором FOR. Я выбрал ::: как отличительную метку для каждой линии изображения, потому что : используется для обычных меток, а :: часто используется в качестве комментария.

2014-10-22 Обновление

Существует еще более простое решение, использующее мою утилиту REPL.BAT - гибридный JScript/пакет script, который выполняет поиск/замену регулярного выражения на stdin и записывает результат в stdout. Просто замените следующую строку для оператора FOR выше:

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

REPL.BAT - это чистый script, который будет запускаться на любой машине Windows с XP. Полная документация встроена в script. Это решение использует параметр A только для печати строк, которые были изменены.

Ответ 3

Для того, чтобы это сработало, вам нужно избежать специальных символов (например, |, используемых для перенаправления каналов).

Однако при использовании echo не все специальные символы партии должны быть экранированы, как некоторые, которые интерпретируются как текст. Те, которым вы все еще должны бежать, и как их избежать, следующие:

%= %%

^= ^^

&= ^&

<= ^<

>= ^>

|= ^|

И если включено замедленное расширение:

!= ^^!

Ответ 4

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

Ответ 5

@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

Ответ 6

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