Проблема с пакетным кодом в ASCII art: «Синтаксис команды неверен» - PullRequest
0 голосов
/ 02 марта 2019

У меня было много двойных попыток решить проблему с моим кодом, касающимся ASCII-графики, ниже обсуждаемая строка:

PING localhost -n 1 >NUL
echo                                         '   ----' ""-.   \/ //
PING localhost -n 1 >NUL

Каждый раз, когда я к нему добираюсь, он завершает команду cmd.подскажите и выдает The syntax of the command is incorrect - я подозреваю, что я по незнанию выбрал неправильный порядок нескольких символов в указанной строке и случайно начал команду, полученную из команды echo ранее.

Как вы заметите, я сбежалмой путь через первое препятствие, которое было первой строкой кода, но тот, что после команды pause, поставил меня в тупик.

Я хотел бы знать, какие символы или порядок символов вызвали это, чтобы я могУточните остальную часть моего кода.Мой код:

echo                                        ___^<__^(^|^)_   ""-/\//\//
pause
PING localhost -n 1 >NUL
echo                                         '   ----' ""-.   \/ //
PING localhost -n 1 >NUL
echo                                                      )  ]  |
PING localhost -n 1 >NUL
echo                                               ____..-'  . /                          )
PING localhost -n 1 >NUL
echo                                           ,-""      __.,' /   ___                 /,
PING localhost -n 1 >NUL
echo                                          /    ,--""/ / / /,-""   """-.          ,'/
PING localhost -n 1 >NUL
echo                                         [    (    / /\/ /  ,.---,_   ._   _,-','
PING localhost -n 1 >NUL
echo                                          \    -./ / / /  /       -._  """ ,-'
PING localhost -n 1 >NUL
echo                                           -._  / / / /_,'            ""--"
PING localhost -n 1 >NUL
echo                                               "/ / / /"         
PING localhost -n 1 >NUL
echo                                               / /\/ /
PING localhost -n 1 >NUL
echo                                              / / / /  
PING localhost -n 1 >NUL
echo                                             / |,' /  
PING localhost -n 1 >NUL
echo                                            / /   |
PING localhost -n 1 >NUL
echo                                           [ //  ,'   
PING localhost -n 1 >NUL
echo                                           | / ,'
PING localhost -n 1 >NUL
echo                                           |/.-'
PING localhost -n 1 >NUL
echo                                           \-'`

timeout 3

:PASS
ECHO Slyshoiev en dyevet rhyzhok.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

В команде echo необходимо экранировать символы <>|^&, !, если включено отложенное расширение (с ^^!), и ), когда echo находится внутри блока в скобках.

В вашем коде есть символы <)|;вы не находитесь внутри блока в скобках, поэтому вам нужно экранировать только символы <|.Ваш код должен выглядеть следующим образом:

echo                                        ___^<_(^|)_   ""-/\//\//\
pause
PING localhost -n 1 >NUL
echo                                         '   ----' ""-.   \/ //
PING localhost -n 1 >NUL
echo                                                      )  ]  ^|
PING localhost -n 1 >NUL
echo                                               ____..-'  . /
PING localhost -n 1 >NUL
echo                                           ,-""      __.,' /   ___                 /,
PING localhost -n 1 >NUL
echo                                          /    ,--""/ / / /,-""   """-.          ,'/
PING localhost -n 1 >NUL
echo                                         [    (    / /\/ /  ,.---,_   ._   _,-','
PING localhost -n 1 >NUL
echo                                          \    -./ / / /  /       -._  """ ,-'
PING localhost -n 1 >NUL
echo                                           -._  / / / /_,'            ""--"
PING localhost -n 1 >NUL
echo                                               "/ / / /"         
PING localhost -n 1 >NUL
echo                                               / /\/ /
PING localhost -n 1 >NUL
echo                                              / / / /  
PING localhost -n 1 >NUL
echo                                             / ^|,' /  
PING localhost -n 1 >NUL
echo                                            / /   ^|
PING localhost -n 1 >NUL
echo                                           [ //  ,'   
PING localhost -n 1 >NUL
echo                                           ^| / ,'
PING localhost -n 1 >NUL
echo                                           ^|/.-'
PING localhost -n 1 >NUL
echo                                           \-'`

timeout 3

:PASS
ECHO Slyshoiev en dyevet rhyzhok.

Примечание. Если вы не уверены, какие символы следует экранировать, экранируйте их все и проверьте, работает ли ваш код.Затем начните удаление некоторых escape-символов (опционально) и проверьте результат!Это должно работать нормально!

Интересные ссылки:

0 голосов
/ 02 марта 2019

Лучший способ - узнать, каких персонажей нужно убежать.В случае вашего «так называемого» искусства вам нужно только экранировать символы < и |.

Удалите два escape-символа, ^, (также известный как каретки) , в первой строке, которая предшествует скобкам, ) и (. Вам нужно только избегать закрывающих скобок, ), если ваше произведение искусства находится в блоке, заключенном в скобки.

Затем просто добавьте недостающие каретки на остальные пятьстроки, перед пятью оставшимися символами трубы, |.

Пример:

@Echo Off
Set "Delay=PathPing LocalHost -n -q 1 -p 250 >Nul"
Echo(
Echo                                 ___^<__(^|)_   ""-/\//\//
%Delay%
Echo                                  '   ----' ""-.   \/ //
%Delay%
Echo                                               )  ]  ^|
%Delay%
Echo                                        ____..-'  . /                          )
%Delay%
Echo                                    ,-""      __.,' /   ___                 /,
%Delay%
Echo                                   /    ,--""/ / / /,-""   """-.          ,'/
%Delay%
Echo                                  [    (    / /\/ /  ,.---,_   ._   _,-','
%Delay%
Echo                                   \    -./ / / /  /       -._  """ ,-'
%Delay%
Echo                                    -._  / / / /_,'            ""--"
%Delay%
Echo                                        "/ / / /"
%Delay%
Echo                                        / /\/ /
%Delay%
Echo                                       / / / /
%Delay%
Echo                                      / ^|,' /
%Delay%
Echo                                     / /   ^|
%Delay%
Echo                                    [ //  ,'
%Delay%
Echo                                    ^| / ,'
%Delay%
Echo                                    ^|/.-'
%Delay%
Echo                                    \-'`

Timeout 3 /NoBreak>Nul

:PASS
Echo Slyshoiev en dyevet rhyzhok.

Pause>Nul

Я использовалPathPing выше вместо Ping, так как кажется, что он дает больший контроль над скоростью задержки, настройте 250 на возможно 125 и 500, чтобы увидеть разницу в скорости .Последняя строка там только для того, чтобы вы могли видеть все, вы можете удалить ее, как только вы довольны результатом.

...