質問: windowsバッチファイルの行を上書きしますか? 私が何かを言う直前に、私はこのコードを試しました:@echo off setlocal enableextensions enabledelayedexpansion for /f %%a in ('copy /z "%~dpf0" nul') do set "ascii_13=%%a" set /p "=example 1" <nul set /p "=!ascii_13!example 2" <nul 私のソース: バッチファイルからのコマンド出力の同じ行を上書きする方法 (それからの検証された答え)それは私にはうまくいきませんでした。試してみるとexample 1example 2として出力されました。 したがって、バッチファイルの同じ行を上書きする方法が必要です(たとえば、前は「例1」と表示されていましたが、その後は「例2」と表示されます)。 ありがとう!
回答: windows 10 treshold2以降、コンソールは理解します ansiエスケープコード これらのコードには、エスケープ文字の16進数の0x1bまたは10進数の27が必要です。 生成が難しい(エディターによって異なります)最初の列に移動してn行を並べるコードはesc[nf 行末まで削除するコードはesc[0jこれらの2つのコードを一緒に(1つ並べて): esc [ 1 f esc [ 0 j hex 1b 5b 31 46 1b 5b 30 4a このバッチはcertutilを使用して、16進文字列をここでasciiにデコードします@echo off echo 1b 5b>esc.hex del esc.bin >nul 2>&1 certutil -decodehex esc.hex esc.bin >nul 2>&1 set /p esc=<esc.bin set "ansi=%esc%1f%esc%0j" echo line 1 echo line 2 echo line 3 echo line 4 timeout /t 3 >nul echo %esc%4f1st line timeout /t 1 >nul echo 2nd line timeout /t 1 >nul echo 3rd line timeout /t 1 >nul echo 4th line echo new first line extra long to see it's deleted, not overwritten timeout /t 3 >nul echo %ansi%overwrite line once timeout /t 2 >nul echo %ansi%overwrite line twice timeout /t 2 >nul echo %ansi%overwrite line thrice