コンソールで .bat スクリプトに次のようなことをさせたい:
C:\Users\username>somescript.bat
Doing something in: 3
一秒後…
C:\Users\username>somescript.bat
Doing something in: 2
どうすればそのようなことをするでしょうか?また、コンソールをクリアしたくありません。ウィンドウの変更は 1 つだけです。
コンソールで .bat スクリプトに次のようなことをさせたい:
C:\Users\username>somescript.bat
Doing something in: 3
一秒後…
C:\Users\username>somescript.bat
Doing something in: 2
どうすればそのようなことをするでしょうか?また、コンソールをクリアしたくありません。ウィンドウの変更は 1 つだけです。
バッチでこれを行うことができます。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!
ため、カーソルは同じ行の最初の列に戻ります。
バッチではこれを行うことはできません。Windows コマンドは、ディスプレイに直接アクセスできません。別のプログラミング言語を使用する必要があります。C#.