如何从批处理文件动画中删除闪烁?

How do I remove flickering from a batch file animation?

所以我一直在批量处理假 GUI,以结束我正在处理的 YouTube 评论。它基本上是一堆方框绘图字符和文本,有点模拟 80 年代的单色终端。无论如何,程序中有一些动画,当我移动到没有动画的部分的下一阶段时,它会闪烁并短暂闪烁。我设置框架的方式就是用方框绘图字符和构成整个屏幕的文本编写的 GUI。动画被设置为在一帧之后,'ping localhost' 用作计时器,然后是 'cls',然后是下一帧,依此类推。我假设 'cls' 是导致所有闪烁的原因。通常我会接受闪烁,因为我相信它会增加 80 年代的感觉,但是当我计划在 YouTube 视频中使用它让全世界看到时,我不想可能是某人癫痫发作的原因。是否有另一种方法来消除闪烁或另一种方法来动画它以便闪烁不会发生?我已经完成了整个程序,不想把它全部扔掉。其他信息是我在 Windows 10 上使用 Notepad++ 制作了这个东西。

详细说明SomethingDark的评论-

仅windows 10 支持虚拟终端代码

Escape Control Character 可以通过解析 The Prompt $E 命令来定义。一种方法是:

 for /F "delims=#" %%a in ('"prompt #$E# & for %%a in (1) do rem"') do set "\E=%%a"

另一种更简单的方法是:

 for /F %%a in ('Echo prompt $E ^|cmd') do set "\E=%%a"

支持绝大多数序列的described here

Type 命令也支持虚拟终端代码,通过将更改的单元格输出到文件,然后将文件输入到屏幕,允许高效的屏幕更新。
注意:使用带有 UTF-8 代码页字符的类型时可能会出现问题,即使设置了正确的代码页 - 为避免这些问题,请明确将类型文件命令重定向到 Con。即:

Type "filename.ext" > Con

定义转义符 %\E% 后,可以使用以下方法抑制控制台光标:

<nul set /P "=%\E%[?25l"

并启用:

<nul Set /P "=%\E%[?25h"

可以使用以下方法清除单个单元格:

rem /* for current cell location */
<nul Set /P "=%\E%[1X"
rem /* for a cell located at substituted y x coordinate value */
<nul Set /P "=%\E%[y;xH%\E%[1X"

可在

找到生成具有一致帧速率的无闪烁动画的示例脚本