3

我希望我的 .bat 脚本在控制台中执行以下操作:

C:\Users\username>somescript.bat
Doing something in: 3

一秒钟后……

C:\Users\username>somescript.bat
Doing something in: 2

我该怎么做这样的事情?另外,我不想清除控制台,只更改窗口上的一件事。

4

2 回答 2

5

你可以用批处理来做到这一点。Windows cmd 无法直接访问显示,但您可以使用回车或退格字符。

@echo off
setlocal EnableDelayedExpansion

REM ** Create a single carriage return character in the `CR` variable
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"

REM ** Count from 3 to 0 down
REM ** ECHO for each number the line without linefeed
REM ** And wait a second with the ping command
for /L %%n in (3 -1 0) do (
  <nul set /p=Do something %%n!CR!
  ping localhost -n 2 > nul
)
echo(

CR第一部分只是给变量 设置一个回车符。

<nul set /p =Text是在没有换行符的情况下显示文本的技巧,因此光标位于最后一个字符之后。
但在这种情况下,我附加了!CR!,因此光标移回到同一行的第一列。

于 2013-08-03T09:05:23.520 回答
1

你不能用批处理来做到这一点。Windows cmd 无法直接访问显示器。您应该使用另一种编程语言,例如。C#。

于 2013-08-03T08:47:19.733 回答