编辑:我没有意识到你必须在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
由于错误,它甚至没有在关闭之前进入选择提示。这基本上会停止整个程序,所以我卡住了,任何建议或建议都有助于实现!
答案 0 :(得分:2)
批处理文件中有一些字符无论你放在哪里都会被解释(甚至在文本输出中)。
例如,|
和(
具有特殊含义,可以通过以下方式“转义”它们来显示它们:^|
和^(
。
如果你有其他特殊字符的麻烦,这里有一个列表,以及你在显示文字时应该逃避它们的方式: