Что ж, если решение ограничено без какой-либо внешней программы , то ответ: ни в коем случае! Однако есть очень простое решение с использованием PowerShell, которое устанавливается на любой современный компьютер с Windows:
@echo off
setlocal
cls
echo Press a key, ESC to end
:loop
for /F %%k in ('PowerShell Write-Host $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"^).VirtualKeyCode') do set "key=%%k"
echo Key read: %key%
if %key% neq 27 goto loop
Проблема с этим решением заключается в том, что оно запускается медленно , хотя для некоторых программ этого может быть достаточно. Однако есть способ ускорить этот метод, который подробно описан на в этом посте .