有没有办法在重新回显时禁用 cmd Echo 命令的闪烁?

Is there a way to disable blinking of cmd Echo command when re-echoing?

我正在用 .bat 文件做一些事情。我也用 echo 尝试了一些东西 命令。其中一个正在反复重复和清除一些文本。它开始闪烁。有什么办法可以避免吗?

代码:

@echo off
:a
echo                                              @
echo                                             @
echo                                            @
echo                                           @
echo                                          @
cls
goto a

闪烁是因为电脑运行通过脚本速度太快导致终端无法及时刷新。它会循环回到 a 并在所有文本完全显示之前重新开始,然后它也会清除。您可以通过增加等待时间来防止它。

这里有一个可以让您的代码慢慢地很好地显示:

@echo off
:a
echo                                              @
PING 1.1.1.1 -n 1 -w 1.0 >NUL
echo                                             @
PING 1.1.1.1 -n 1 -w 1.0 >NUL
echo                                            @
PING 1.1.1.1 -n 1 -w 1.0 >NUL
echo                                           @
PING 1.1.1.1 -n 1 -w 1.0 >NUL
echo                                          @
PING 1.1.1.1 -n 1 -w 1.0 >NUL
cls
goto a

删除回声之间的所有 PING,只在最后一个回声之后和 cls 之前将其显示在块中。基本上,ping 会强制脚本等待 1.0 毫秒。我试过 0.5 但它仍然闪烁。 This is where I found the method.

WikiHow 也有一篇关于如何降低批处理文件速度的文章,我尝试了其中的一些,但它们显示了一些文本,这对你来说可能是不可接受的。这就是为什么我觉得 ping 在这种情况下是最好的。 'Sleep' 在 Windows 7 上不起作用,看起来它已被弃用。

还有另一种方法,但它不适用于空格:

@echo off
setlocal enabledelayedexpansion
REM create a CarriageReturn:
for /f %%a in ('copy "%~f0" nul /z') do set "CR=%%a"
set "line=----------"

echo Please wait...
for /l %%i in (0,1,10) do (
  <nul set /p "x=!line:~%%i!@ !cr!"
  timeout /t 1 >nul
)
echo done.