Очистить 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%