На этом сайте: http://www.dostips.com/forum/viewtopic.php?f=3&t=3428Описание: Вспомогательная программа GetKey.exe. Эта программа считывает ключ и сразу возвращает код Ascii через ERRORLEVEL, поэтому он не требует Введите ключ для продолжения. На этом же сайте показана программа примера ReadLine.bat; он эмулирует SET /P
команды с помощью Show.exe (другая вспомогательной программы), то есть, BackSpace ключа удаления последнего набранного символа и Введите ключ завершить ввод. Вы можете изменить: подпрограмму ReadLine для удовлетворения конкретных потребностей, и показано несколько примеров этой функции.
Например, ниже подпрограмма является модифицированной версией: ReadLine, что только для чтения десятичных цифр и точек, и продолжает «автоматически» после чтения 9 символов (например, «127.0.0.1»):
:Read9DigitsAndPoints var=["prompt"]
set Point=46
set Slash=47
rem set Digit_0=48
set Digit_9=57
set %1=
set len=0
if "%~2" neq "" Show %~2
:nextKey
GetKey
set key=%errorlevel%
if %key% geq %Space% (
rem Ascii character: ignore characters that are not digits nor points
if %key% lss %Point% goto nextKey
if %key% gtr %Digit_9% goto nextKey
if %key% equ %Slash% goto nextKey
Show %key%
for /F "delims=" %%a in ('Show %key%') do set "%1=!%1!%%a"
set /A len+=1
) else if %key% equ %BackSpace% (
if defined %1 (
Show %BackSpace% %Space% %BackSpace%
set "%1=!%1:~0,-1!"
set /A len-=1
) else (
Show %Bell%
)
)
if %len% neq 9 goto nextKey
echo/
exit /B
Вы можете дополнительно изменить эту подпрограмму, чтобы прочитать хорошо отформатированный IP-адрес (т. Е. Четыре группы цифр, разделенные на 3 балла), поэтому процедура продолжается после того, как пользователь вводит IP-адрес по своему усмотрению. К тому времени, do вы знаете, в какой момент вы хотите, чтобы рутина продолжалась? После прочтения первой цифры после третьего пункта?
Антонио
... а что, если пользователь пытался ввести 127.0.0.10? –
IMO вам нужно написать свой собственный парсер ввода (в C/Pascal/Basic ... что угодно), чтобы это понять. – Endoro