Как проверить символ на позиции курсора в пакетном режиме? - PullRequest
0 голосов
/ 21 октября 2018

Я возился с escape-последовательностями VT100 в Windows 10. Я знаю, что этот код:

@ECHO OFF
FOR /F %%A in ('ECHO prompt $E^| cmd') DO SET "ESC=%%A"
<NUL SET /P "=%ESC%[4;6HBye"

установит позицию курсора на 4,6 и покажет «Пока», начиная с этой позиции,У меня вопрос, есть ли способ проверить, какой символ находится в определенном месте курсора?Например, если я спрашиваю, что находится в позиции 4,6 курсора, он скажет мне букву «B»?

Я пытался использовать команду for, вроде как

FOR /F "delims=" %%A in ('<NUL SET /P "=%ESC%[4;6HBye"') DO (
    echo %%A
)

Но на самом деле это не работает.у кого-нибудь есть решение?Спасибо.

1 Ответ

0 голосов
/ 22 октября 2018

Вы не можете сделать это ни через escape-последовательности 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%"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...