【问题标题】:'_' is not recognized as an internal or external command in batch [duplicate]'_'在批处理中未被识别为内部或外部命令[重复]
【发布时间】:2018-06-13 16:58:21
【问题描述】:

编辑:我没有意识到您必须在 echo 命令中使用转义符。在查看了链接的重复答案和该问题的答案后,我通过在 >| 上使用转义符解决了我的问题。我还实施了@Mofi 的建议,即从ERRORLEVEL 语句中删除==。非常感谢大家的建议和建议!更正后的代码是:

@ECHO OFF
ECHO ====================================================
ECHO \    _______           __ __                       /
ECHO /   /_  __(_)_ _  ___ / //_/__ ___ ___  ___ ____   \
ECHO \    / / / /  ' \/ -_) ,^< / -_) -_) _ \/ -_) __/   /
ECHO /   /_/ /_/_/_/_/\__/_/^|_^|\__/\__/ .__/\__/_/      \
ECHO \                               /_/                /
ECHO /                 Choose an Option:                \
ECHO \                   Clock [I]n                     /
ECHO /                   Clock [O]ut                    \
ECHO \              [S]ee Previous Times                /
ECHO /                                                  \
ECHO \                                                  /
ECHO /                                                  \
ECHO \                                                  /
ECHO /                                                  \
ECHO ====================================================/
CHOICE /c IOS /N
IF ERRORLEVEL 3 goto :Times
IF ERRORLEVEL 2 goto :Out
IF ERRORLEVEL 1 goto :In

原问题

我正在制作一个名为“TimeKeeper”的文件,我希望它看起来很酷,所以我让它以 ASCII 艺术风格打印计时器。但是每次我运行脚本时,在回显前四行并说:

Access is denied.
'_' is not recognized as an internal or external command, operable program or batch file.

让我感到困惑的是我正在使用 echo 来输出 ASCII,而且它的格式似乎正确。我在 ANSII 中编码,文件中没有其他编码格式

代码:

@ECHO OFF
ECHO ====================================================
ECHO \    _______           __ __                       /
ECHO /   /_  __(_)_ _  ___ / //_/__ ___ ___  ___ ____   \
ECHO \    / / / /  ' \/ -_) ,< / -_) -_) _ \/ -_) __/   /
ECHO /   /_/ /_/_/_/_/\__/_/|_|\__/\__/ .__/\__/_/      \
ECHO \                               /_/                /
ECHO /                 Choose an Option:                \
ECHO \                   Clock [I]n                     /
ECHO /                   Clock [O]ut                    \
ECHO \              [S]ee Previous Times                /
ECHO /                                                  \
ECHO \                                                  /
ECHO /                                                  \
ECHO \                                                  /
ECHO /                                                  \
ECHO ====================================================
CHOICE /c IOS /N
IF ERRORLEVEL == 3 goto :Times
IF ERRORLEVEL == 2 goto :Out
IF ERRORLEVEL == 1 goto :In

由于错误,它甚至在关闭之前都没有进入选择提示。这基本上会停止整个程序,所以我被卡住了,任何建议或建议都会有很大帮助!

【问题讨论】:

  • 有些字符在批处理中有特殊含义。例如|&lt;。要从字面上呼应它们,您必须逃避它们:echo ^|_^&lt;
  • @Excallypurr,作为您编辑的一部分,建议您更新提供的代码以匹配您已声明的修复程序。尽管如果您没有报告任何更新的问题,我建议您回滚编辑并提供最终代码作为答案。也就是说,如果您的答案没有比您已经接受的答案有所改善,那么也不要这样做,保持原样,并且根本不要发布答案。

标签: batch-file ascii-art


【解决方案1】:

批处理文件中有一些字符,无论您将它们放在哪里(甚至在文本输出中)都会被解释。

例如,|( 具有特殊含义,可以通过“转义”它们来显示它们:^|^(

如果您对特殊字符有其他问题,这里列出了这些问题,以及在显示文本时应该如何转义它们:

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

【讨论】:

    猜你喜欢
    • 2016-01-31
    • 2021-12-06
    • 2015-08-07
    • 2020-06-01
    • 2014-10-19
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多