有CLS
单行输出吗?我不相信CLS
有任何转换,所以也许更好的问题是:
有没有办法
我只是想通过提供实时反馈/信息来使我的脚本更加用户友好,而不是通过轻微更改的多行。但是,我能想到的唯一方法就是这样:
@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
删除了所有输出,当我只想通过擦除并重新输出它来刷新一行时。
有人有什么想法吗?
答案 0 :(得分:15)
如果您只需要将光标移动到一行(如您的样本),则 它可以带回车字符。
@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
)
答案 1 :(得分:3)
尝试ANSI序列:http://www.robvanderwoude.com/ansi.php
挖掘链接,http://batch.xoo.it/t2238-BG-exe-Utility-for-Batch-Games.htm看起来最有希望。
这个页面听起来像是有关控制/设置控制台大小(以及其他显示和缓冲区大小设置)的有用讨论。 http://www.pcreview.co.uk/forums/change-buffer-size-console-window-can-runas-inherit-console-props-t1468842.html
答案 2 :(得分:3)
不幸的是,没有本机命令或实用程序可以在Windows命令行控制台中重新定位光标。
您需要第三方实用程序。
Aacini在DOSTips上发布了一个免费的CursorPos.exe实用程序。 CurorPos.exe "source"以十六进制数字给出。要使用来源,您需要HexToBin.bat "compiler"。
浏览两个线程,您会发现许多有用的实用程序。
答案 3 :(得分:0)
通过moving the cursor的TIMEOUT
的另一种快捷方法:
@echo off
<nul set/p"=5 seconds till i close..."
timeout /t 5 /nobreak >con
echo(i'm closing now...[REPLACE this with lots of spaces]
exit /b