ASCII 艺术的批处理代码问题:"The syntax of the command is incorrect"

Batch code issue with ASCII art: "The syntax of the command is incorrect"

我在解决有关 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.

最好的方法是了解哪些字符需要转义。对于你的 'so called' 艺术,你只需要转义 <| 字符.

请删除第一行的两个转义字符 ^(也称为脱字符),在括号 )( 之前。 如果您的作品在括号内,您只需要转义右括号 )

然后只需在其他五行中添加缺少的插入符,在剩余的五个管道字符前面,|.

示例:

@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调整为可能的[=21] =] 和 500 以查看速度 的差异。最后一行只是为了让您看到所有内容,您可以在对输出满意后将其删除。

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.

注意:如果您不确定应该转义哪些字符,将它们全部转义并测试您的代码是否有效。然后开始删除一些转义字符(可选)并测试结果!它必须正常工作!

有趣的参考文献: