进度条显示 "echo is OFF" 消息

Progress bar shows "echo is OFF" message

我正在尝试用 ASCII 字符模拟进度条,但只要我的进度条超过 0%,就会显示消息 echo is OFF

@echo off
setlocal EnableDelayedExpansion
color A
echo hacking main intelligence systems...
ping -n 2 127.0.0.1>nul
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading...        Please Wait
echo ---------------------------------------
echo                                    :0 ]
echo ---------------------------------------
ping localhost -n 2 >nul
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading.          Please Wait
echo ---------------------------------------
echo ||                                 :5 ]
echo ---------------------------------------
ping localhost -n 3 >nul
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading..         Please Wait
echo ---------------------------------------
echo ||||                              :15 ]
echo ---------------------------------------
ping localhost -n 2 >nul

脚本会像那样继续运行一段时间,但此代码段较小且存在相同问题。

是什么原因导致出现该消息,如何才能正确显示进度条?

你提出的 echo 为什么不工作的实际问题是完全合理的,这对初学者来说是一个极其常见的错误。

| 是一个符号,它获取一个命令的输出并将其用作另一个命令的输入。在你的情况下,你实际上拥有 echo 本身,这将简单地 return echo 的状态(在这种情况下,echo 为 OFF)。

为了解决这个问题,您可以使用不同的符号,或者您可以在文本编辑器中打开代码并将 | 的所有实例替换为 ^|

^ 是一个转义字符,它告诉 echo 按字面解释符号并打印实际的 | 而不是使用它来路由命令输出。

@echo off
setlocal EnableDelayedExpansion
color A
echo hacking main intelligence systems...
ping -n 2 127.0.0.1>nul
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading...        Please Wait
echo ---------------------------------------
echo                                    :0 ]
echo ---------------------------------------
ping localhost -n 2 >nul
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading.          Please Wait
echo ---------------------------------------
echo ^|^|                                 :5 ]
echo ---------------------------------------
ping localhost -n 3 >nul
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo    Loading..         Please Wait
echo ---------------------------------------
echo ^|^|^|^|                              :15 ]
echo ---------------------------------------
ping localhost -n 2 >nul