加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 01:59:19 所属栏目:Windows 来源:网络整理
导读:所以,我正在制作一个“加载屏幕”,并且可能在我的编码中节省一些空间,我想知道你是否可以编辑已输出的行.我可能有一个支架[]作为一个加载阶段,所以可以放一个支架,然后等待,看看用户是否按下C(继续)1-2秒,如果没有进入下一阶段([] [])?我目前有一个脚本,其
所以,我正在制作一个“加载屏幕”,并且可能在我的编码中节省一些空间,我想知道你是否可以编辑已输出的行.我可能有一个支架[]作为一个加载阶段,所以可以放一个支架,然后等待,看看用户是否按下C(继续)1-2秒,如果没有进入下一阶段([] [])?我目前有一个脚本,其中[]设置为加载,对于每个阶段,我做CLS然后回显%LOAD%[].

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

Checking status...
Loading server...

然后

Checking status... OK
Loading server... done

如果你能找到像█这样与Batch兼容的角色,你可以获得奖励积分.

解决方法

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

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

@echo off

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

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

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

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!"
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读