是否可以编辑已在Windows批处理中输出的行?

5 windows batch-file

所以,我正在制作一个"加载屏幕",并且可能在我的编码中节省一些空间,我想知道你是否可以编辑已输出的行.我可能有一个支架[]作为一个加载阶段,所以可以放一个支架,然后等待,看看用户是否按下C(继续)1-2秒,如果没有进入下一阶段([] [])?我目前有一个脚本,其中[]被设置load为每个阶段,我做CLS,然后echo %LOAD%[].


另外,如果我只想在一行上进行状态更新,例如:

Checking status...
Loading server...
Run Code Online (Sandbox Code Playgroud)

然后

Checking status... OK
Loading server... done
Run Code Online (Sandbox Code Playgroud)

如果你能找到一个?与Batch兼容的角色,你可以获得奖励积分.


jeb*_*jeb 5

您可以省略CLS并在帮助下重新创建整个屏幕set /p,因为set /p不输出换行符,您可以附加文本.

通常set /p用于将文本分配给用户输入的变量,但如果您使用NUL的重定向,则只输出文本.

@echo off

for /L %%n in (1 1 5 ) do (
  <nul set /p ".=[]"
  ping -n 2 localhost > nul
)
echo(
echo The end
Run Code Online (Sandbox Code Playgroud)

您要求的状态更新可以以相同的方式处理,因为它只会向行添加内容.
如果要更改线条的一部分或整行,则需要将光标向后移动或移动到行的开头.
两者都可以使用退格字符或回车符来完成.

这是一个依靠固定屏幕位置的样本

setlocal EnableDelayedExpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
for /L %%n in (1 1 1000) do (
  <nul set /p ".=%%n!CR!"
)
Run Code Online (Sandbox Code Playgroud)