【问题标题】:How to check character on cursor position in Batch?如何在批处理中检查光标位置上的字符?
【发布时间】:2018-10-21 03:05:59
【问题描述】:

我一直在使用 Windows 10 上的 VT100 转义序列。我知道这段代码:

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

将光标位置设置为 4,6 并从该位置开始显示“Bye”。我的问题是,有没有办法检查特定光标位置上的字符?比如,如果我问光标位置 4,6 上是什么,它会告诉我字母“B”?

我尝试过使用 for 命令,有点像这样

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

但这并没有真正起作用。有没有人有办法解决吗?谢谢。

【问题讨论】:

标签: batch-file


【解决方案1】:

您不能通过 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%"

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多