从 .bat 文件中清除 Windows 终端 + cmd.exe

从 .bat 文件中清除 Windows 终端 + cmd.exe

我在用Windows 终端cls以及作为第一个命令运行的批处理文件。在独立cmd.exe运行下cls,会清除窗口和回滚。在 Windows 终端下,它不会清除回滚。

我可以向我的 .bat 文件中添加什么内容来cls删除回滚?

此错误报告声称使用echo "$([char]27)[2J$([char]27)[3J"会清除回滚,但我相信这适用于 Ubuntu 主机或 Powershell。如果我将该命令逐字逐句地放入 .bat 文件中,它只会回显那些文字字符。

答案1

刚刚在终端上测试了这个:

:: 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%

答案2

根据@LotPings 的评论,如果您可以在批处理文件中输入 ASCII 转义字符(代码 27),您就可以这样做。

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

这就是$([char]27)我最初提出的问题。不幸的是,如果我将它们粘贴到代码块中,大多数 Web 浏览器都会删除它们。上面看到的 ␛ 字符不是 ASCII 27,但表示该字符需要放在哪里。

如果您可以运行此 JavaScript 代码,则可以复制结果并粘贴到文件中.bat

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

相关内容