首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLS (清除)单行?

CLS (清除)单行?
EN

Stack Overflow用户
提问于 2012-08-15 15:24:40
回答 4查看 25.6K关注 0票数 9

有任何方法可以CLS一个单行输出吗?我不认为CLS有任何开关,所以也许更好的问题是:

有没有办法

  1. 保留所有以前的输出以供重复使用?
  2. 捕获当前显示的输出(就像通过标记和复制一样)?

我只是想通过实时反馈/信息来使我的脚本更方便用户,而不是多行稍加改动。不过,我唯一能想到的办法是这样做:

代码语言:javascript
复制
@echo off
goto Prep

:Prep
    SET count=5
    SET genericMessage=This window will close

    goto Output

:Output
    IF NOT %count% == -1 (
        cls
        IF %count% == 0 (
            echo %genericMessage% now.
        ) ELSE (
            echo %genericMessage% in %count% seconds.
        )
        SET /A count=%count% - 1
        ping localhost -n 2 >nul
        goto Output
    ) ELSE (
        exit
    )

所以,你明白了:

但是,这方面的问题是,当我只想通过擦除和重新输出来刷新一行时,CLS会擦除所有的输出。

有人有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-15 16:00:36

不幸的是,没有任何本机命令或实用程序可以在Windows命令行控制台中重新定位游标。

您将需要一个第三方实用程序。

Aacini在DOSTips上发布了一个免费的DOSTips实用程序。CurorPos.exe“源”给出了十六进制数字。要使用源,您将需要HexToBin.bat“编译器”

浏览两个线程,您会发现一些实用程序,您可能会发现有用的。

票数 4
EN

Stack Overflow用户

发布于 2013-03-05 16:31:55

如果您只需要在一行中移动光标(如您的示例),

这是有可能的马车返回字符。

代码语言:javascript
复制
@echo off
setlocal EnableDelayedExpansion
for /f %%a in ('copy /Z "%~f0" nul') do set "CR=%%a"
for /L %%n in (5 -1 1) do (
  <nul set /P "=This window will close in %%n seconds!CR!"
  ping -n 2 localhost > nul
)
票数 16
EN

Stack Overflow用户

发布于 2012-08-15 15:29:05

尝试ANSI序列:http://www.robvanderwoude.com/ansi.php

通过挖掘链接,http://batch.xoo.it/t2238-BG-exe-Utility-for-Batch-Games.htm看起来是最有希望的。

此页面听起来似乎对控制/设置控制台大小(以及其他显示和缓冲区大小设置)进行了有益的讨论。-size-console-window-can-runas-inherit-console-props-t1468842.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11972249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档