Batch file 如何批量检查光标位置上的字符?

Batch file 如何批量检查光标位置上的字符?,batch-file,Batch File,我一直在搞Windows10上的VT100转义序列。我知道这个代码: @ECHO OFF FOR /F %%A in ('ECHO prompt $E^| cmd') DO SET "ESC=%%A" <NUL SET /P "=%ESC%[4;6HBye" @ECHO关闭 对于('ECHO prompt$E^ | cmd')中的/F%%A,请设置“ESC=%%A” 您不能通过VT100转义序列或单独通过批处理命令来实现这一点;但是,您可以使用不同的工具或语言来完成。例如,使用Power

我一直在搞Windows10上的VT100转义序列。我知道这个代码:

@ECHO OFF
FOR /F %%A in ('ECHO prompt $E^| cmd') DO SET "ESC=%%A"
<NUL SET /P "=%ESC%[4;6HBye"
@ECHO关闭
对于('ECHO prompt$E^ | cmd')中的/F%%A,请设置“ESC=%%A”

您不能通过VT100转义序列或单独通过批处理命令来实现这一点;但是,您可以使用不同的工具或语言来完成。例如,使用PowerShell:

@echo off
setlocal

for /F "delims=" %%a in ('"PowerShell $console=$Host.UI.RawUI; $curPos=$console.CursorPosition; $rect=new-object System.Management.Automation.Host.Rectangle $curPos.X,$curPos.Y,$curPos.X,$curPos.Y; $BufCellArray=$console.GetBufferContents($rect); Write-Host $BufCellArray[0,0].Character;"') do set "char=%%a"
echo Char at cursor: "%char%"

根据微软的和列表,没有这样的VT100序列。不仅不能这样做,而且即使可以,也无法在不干扰屏幕内容的情况下捕获结果。请参阅
@echo off
setlocal

for /F "delims=" %%a in ('"PowerShell $console=$Host.UI.RawUI; $curPos=$console.CursorPosition; $rect=new-object System.Management.Automation.Host.Rectangle $curPos.X,$curPos.Y,$curPos.X,$curPos.Y; $BufCellArray=$console.GetBufferContents($rect); Write-Host $BufCellArray[0,0].Character;"') do set "char=%%a"
echo Char at cursor: "%char%"