进度条显示“echo is OFF”消息

时间:2015-05-29 00:39:35

标签: batch-file echo

我正在尝试使用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

脚本会持续一段时间,但此代码段较小并且存在同样的问题。

导致消息显示的原因是什么,以及如何正确显示条形图进度?

1 个答案:

答案 0 :(得分:1)

echo无效的实际问题是完全合理的,对于初学者来说这是一个非常常见的错误。

|是一个符号,它接受一个命令的输出并将其用作另一个命令的输入。在您的情况下,您实际上只有echo,这将只返回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