Очистить Windows Terminal + cmd.exe из.bat файла

Я использую терминал Windows вместе с командным файлом, который запускается cls как первая команда. Под автономным cmd.exe Бег cls очищает окно и прокрутку. Под терминалом Windows он не очищает прокрутку.

Что я могу добавить в свой файл.bat вместе с cls убрать прокрутку?

Этот отчет об ошибке утверждает, что с помощью echo "$([char]27)[2J$([char]27)[3J" очищает прокрутку, но я считаю, что это относится либо к хосту Ubuntu, либо к Powershell. Если я дословно вставлю эту команду в файл.bat, она просто перекликается с этими буквенными символами.

2 ответа

Решение

В соответствии с комментариями @LotPings вы можете сделать это, если сможете ввести управляющий символ ASCII (код 27) в свой пакетный файл.

@cls && echo ␛[2J␛[3J

Что это $([char]27) делал в моем первоначальном вопросе. К сожалению, большинство веб-браузеров удаляют их, если я вставлю их в блок кода. Символ seen, показанный выше, не ASCII 27, но указывает, где этот символ должен быть.

Если вы можете запустить этот код JavaScript, вы можете скопировать результат и вставить в .bat файл.

alert("@cls && echo "+String.fromCharCode(27,91,50,74,27,91,51,75))

Только что проверил это для работы в Терминале:

:: Q:\Test\2019\08\29\SO_1476288.cmd
:: Since windows 10 Treshold2 the console understands  
:: [Ansi Escape Codes](https://en.wikipedia.org/wiki/ANSI_escape_code)  
:: These codes require the escape char hex 0x1b or decimal 27 which is  
:: difficult to generate (depends on your editor)  
::  
::     esc [ 2  J  esc [ 3  J
:: hex 1B 5B 32 4A 1B 5B 33 4A
::
:: This Batch uses certutil to decode a hex string to ascii here
@echo off
echo 1B 5B 32 4A 1B 5B 33 4A>Clear.hex
Del Clear.bin
certutil -decodehex Clear.hex Clear.bin >NUL 2>&1
Set /P Clear=<Clear.bin

dir
Timeout /t 3 >Nul
Echo %Clear%
Другие вопросы по тегам