Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось Anonymоus, 24-03-2012 в 20:49.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:19, 24-03-2012 | #2