vitalijch, этот код обработает входную строку и выделит из нее все цифры, которые после и выведет. Если вывод не нужен - уберите строку с Set в конце. К найденным цифрам можно обращаться по переменной Result_1, Result_2 и т.д, общее число найденных цифр содержится в переменной i.
Код:
@Echo Off
SetLocal EnableDelayedExpansion
Set IncomingString=sdFKEflksdf4591askj fbasdfk02342ifdsf65 17 ghrFVEF
Set Charset=1234567890
Set i=0
:ParseString
Set /A i+=1&Set Num_%i%=&Set NumDetect=0
If Not "%IncomingString%"=="" Call :Parser
Set Result_!i!=!Num_%i%!
If Not "%IncomingString%"=="" GoTo ParseString
GoTo ShowResult
:Parser
Echo %Charset%|Find "%IncomingString:~,1%">nul&&(
Set NumDetect=1
Set Num_%i%=!Num_%i%!%IncomingString:~,1%
)||(
If %NumDetect%==1 Exit /B
)
Set IncomingString=%IncomingString:~1%
If "%IncomingString%"=="" Exit /B
GoTo Parser
:ShowResult
For /F "tokens=2 delims==" %%N In ('Set Result_') Do (Echo %%N)
pause
А вот полностью готовый скрипт, отвечающий вашим нуждам - прием строки и удвоение числа в ней. Если чисел нету, или больше одного - выдает ошибку.
Показать скрипт
Код:
@Echo Off
SetLocal EnableDelayedExpansion
Set /P IncomingString= Введите строку:
Set Charset=1234567890
Set i=0
:ParseString
Set /A i+=1&Set Num_%i%=&Set NumDetect=0
If Not "%IncomingString%"=="" Call :Parser
Set Result_!i!=!Num_%i%!
If Not "%IncomingString%"=="" GoTo ParseString
GoTo ShowResult
:Parser
Echo %Charset%|Find "%IncomingString:~,1%">nul&&(
Set NumDetect=1
Set Num_%i%=!Num_%i%!%IncomingString:~,1%
)||(
If %NumDetect%==1 Exit /B
)
Set IncomingString=%IncomingString:~1%
If "%IncomingString%"=="" Exit /B
GoTo Parser
:ShowResult
If "%Result_1%"=="" (
Echo Вы не ввели ни одного числа
) Else (
If "%Result_2%"==""1 (
Echo В введённой строке больше одной цифры, проверьте правильность ввода
) Else (
Set /A Result=Result_1*2
Echo Удвоенное число: !Result!
)
)
pause