3

コンソールで .bat スクリプトに次のようなことをさせたい:

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

一秒後…

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

どうすればそのようなことをするでしょうか?また、コンソールをクリアしたくありません。ウィンドウの変更は 1 つだけです。

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 コマンドは、ディスプレイに直接アクセスできません。別のプログラミング言語を使用する必要があります。C#.

于 2013-08-03T08:47:19.733 に答える