我在用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))